Fråga:
Finns det ett verktyg för att kontrollera filintegriteten för en serie bilder?
Rook
2014-01-15 01:51:53 UTC
view on stackexchange narkive permalink

Ibland när du laddar ner en bild och anslutningen bryts i mitten av strömmen, sitter du kvar med en halv nedladdad bild. Om du försöker se den får du den övre delen av bilden och den nedre delen är vanligtvis färgad grå eller grön eller någon annan färg. Med andra ord är den skadad.

Finns det ett sätt att kontrollera om bilden är skadad på det sättet eller på annat sätt skadad?

Fem svar:
Please Read My Profile
2014-01-15 14:18:56 UTC
view on stackexchange narkive permalink

Om du pratar om JPEG-filer är verktyget jpeginfo precis det du letar efter. Det kan kontrollera filer för olika typer av JPEG-fel och korruption och antingen returnera en felkod (det mest användbara för skript) eller bara ta bort filer med fel.

Jag använder den som en del av min ursprungliga fil överföring för att se till att allt kopieras okej utan att förlita sig på manuell kontroll. (Därefter ser jag till att deras kontrollsummor inte ändras som en del av mitt normala säkerhetskopia / bitrotskydd.)

Programmet är kommandorad och kommer som källkod, men det borde vara lätt att bygga och använda på alla Linux-distributioner eller på en Mac med en utvecklingsmiljö som är korrekt inställd. Jag är säker på att du till och med kan göra det på Windows med Cygwin eller MinGW. (Till exempel, även om jag inte kan garantera dess integritet, verkar detta blogginlägg legitimt och innehåller en förkompilerad nedladdning.) Att bygga det själv:

  $ git klon https://github.com/tjko/jpeginfo.gitKloning till 'jpeginfo' ... [...] Kontrollera anslutning ... gjort $ cd jpeginfo / $ ./konfigurera && gör  

Detta ska skapa ett jpeginfo -kommando som du antingen kan köra på plats eller kopiera vart du vill (eventuellt med make install ).

Sedan , du kör det så här:

  $ ./jpeginfo -c * .jpgtest1.jpg 1996 x 2554 24bit Exif P 6582168 [OK] test2.jpg 1996 x 2554 24bit Exif P 6582116 För tidigt slut av JPEG-fil [VARNING] test3.jpg Korrupta JPEG-data: 1 främmande byte före markör 0xe2 1996 x 2554 24bit Exif P 6582169 [VARNING]  

Här är test1.jpg helt bra, och test2.jpg Jag raderade några byte från slutet och test3.jpg jag ändrade några slumpmässiga byte i rubriken.

Om du har RAW-filer, kolla in den här sidan från American Society of Media Photographers på DNG Validation, eller en om datavalideringsinformation, som omfattar användning av Adobes DNG omvandlare för att batch-validera egna RAW-format. (Tyvärr är detta en GUI-operation och inte nödvändigtvis lätt att skriva.)

Om du har en kamera som ursprungligen matar ut 1.2-versionen av DNG, är det ännu bättre, eftersom det inkluderar en inbyggd MD5-kontrollsumma av bilddata. Tyvärr verkar detta inte lagras med den vanliga bildmetadata - eller åtminstone exiftool och exiv2 känner inte igen det, och de läser 1.2 DNG-filer i allmänhet - vilket innebär att så vitt jag vet för närvarande Adobe-validering verktyget är det enda sättet att dra nytta av det också.

Vet du om Windows-binärer för jpeginfo finns någonstans?
Att använda jpeginfo-verktyget av git clone verkar inte vara möjligt på Windows, eftersom 'aux' verkar vara ett Windows-reserverat namn och git kan inte klona den tidigare nämnda katalogen.
--- återuppta samtalet från det andra inlägget här; Att packa upp arkivet ger ett fel på grund av 'aux'. Att byta namn på "aux" i arkivet hjälpte till att packa upp och sedan byta namn på det till "aux" inom cygwin löste problemet. Men att köra från cygwin resulterade fortfarande i många fel; något om wrjpgcom.c: 87: 54: varning: inkompatibel implicit deklaration av inbyggd funktion 'exit' [aktiverad som standard] #define ERREXIT (msg) (fprintf (stderr, "% s \ n", msg), exit (EXIT_FAILURE)) (bara en av många)
@ldigas Jag byggde en MinGW-binär som du hittar på http://mattdm.org/misc/jpeginfo-w32/jpeginfo.exe. Jag byggde detta på Linux som en korskompilerad körbar, så har inte testat det, men det verkade _bygga_ okej. Jag kan inte lova att det fungerar, men jag lovar att det bara är uppströms koden och inte har några virus eller något. :)
Uppröstade detta för några minuter sedan för det ansträngning du gör, men det verkar inte fungera så bra på Windows. jpeginfo -c any_jpeg_file.jpg Jag tillhandahåller det, det verkar rapportera För tidigt slut på JPEG-fil JPEG-dataströmmen innehåller ingen bild [FEL].
När du tittar igenom koden för jpeginfo verkar det inte göra mycket men leta efter några värden i EXIF-data. Det är också super gammalt. Jag är säker på att det finns bättre alternativ (se mitt svar nedan). källkoden: https://github.com/tjko/jpeginfo/blob/master/jpeginfo.c
Cornelius
2014-01-15 16:50:26 UTC
view on stackexchange narkive permalink

Om detta inte handlar om att ladda ner bilder från din kamera utan en dator-till-dator-överföring, är en vanlig metod för filintegritet kontrollsumma.

Tyvärr, såvitt jag vet, kontrolleras vanliga "slutanvändares" bildformat (jpeg, png, gif, ...) inte integritet på egen hand. Men som jag förstår frågan om att innebära automatiserad bearbetning kan integrering av kontrollsummverktyg ( CRC32, MD5, ...) i arbetsflödet vara en genomförbar lösning. En vanlig metod för att lagra kontrollsumman är att ha en fil med samma filnamn, bara med ett tillägg, som: img123.jpg → img123.jpg.md5 .

Detta tillvägagångssätt har den extra fördelen att du också kan kontrollera integriteten hos (till exempel) sidobilfiler eller något annat du vill överföra i en liknande mekanism. Och om du håller kvar kontrollsummen, även i framtiden. (Och det har nackdelen att inte integreras i PS, LR eller andra vanliga verktyg i den mån jag har begränsad kunskap.)

Det är värt att notera att DNG innehåller en kontrollsumma och kan verifieras direkt i Lightroom.
Jag var inte medveten om det! Excellent. Meningsfullt också. Jag redigerade svaret för att göra det tydligare att jag siktade på "slutanvändare" -format mer än arkivformat, men det är sött att DNG hjälper till med kontrollsummor.
Jag använder "Advanced Checksum Verifier" (ACSV) av Irnis Haliullin för att beräkna MD5-kontrollsummafiler som kopieras till säkerhetskopieringsmediet tillsammans med originalfilerna. ACSV körs i batch eller interaktivt. Kopieringens integritet kan verifieras när som helst genom att beräkna kontrollsumman igen och jämföra med originalet.
Kez
2015-08-30 22:33:08 UTC
view on stackexchange narkive permalink

ImageVerifier gjorde vad du ville. Tyvärr är den inte tillgänglig för nedladdning längre och supporten har avbrutits den 31 december 2017 (se Ingestamatic och ImageVerifier finns inte längre till salu).

Gammalt svar av historiska skäl

ImageVerifier (förkortad IV) går igenom en hierarki av mappar som letar efter bildfiler att verifiera. Det kan verifiera TIFF, JPEG. PSD, DNG och icke-DNG råvaror (t.ex. NEF, CR2).

IV är utformad för att bearbeta ett stort antal bilder. Mapphierarkier med 100 000 bilder eller mer bör inte vara något problem. I en testkörning sprang IV i 14 timmar.

Det finns två typer av verifiering som IV utför: strukturkontroll och haschkontroll.

http: // baspath. com / site / detail-ImageVerifier.php

Det låter som om du är associerad med ImageVerifier, om så är fallet, kan du berätta om detta i ditt svar.
Jag är inte förknippad med produkten alls. Jag var tvungen att verifiera några bildfiler efter en NAS-krasch och använde det här verktyget. Jag klippte precis in texten från webbplatsen för att ge en beskrivning.
FWIW - Det är bra för kamerafiler (jpgs och olika RAW-format - dess primära avsedda användning) men inte så bra för andra filtyper utan codec, etc. ImageMagicks funktion är ett annat alternativ
Fabiano Tarlao
2018-12-11 17:16:40 UTC
view on stackexchange narkive permalink

Jag utvecklade check_media_integrity ett enkelt pythonscript check_mi.py , du kan ladda ner det från GitHub:

https: // github .com / ftarlao / check-media-integritet

Jag citerar guideintro:

check-mi är ett Python 2.7-skript som automatiskt kontrollerar integriteten av mediefiler (bilder, video, ljud). Du kan kontrollera integriteten för en enskild fil eller en uppsättning filer i en mapp och undermappar rekursivt, slutligen kan du valfritt mata ut listan med dåliga filer med deras sökväg och detaljer i CSV-format.

Verktyget testar filintegritet med hjälp av vanliga bibliotek (Pillow, ImageMagik, FFmpeg) och kontroll när de effektivt kan avkoda mediefilerna. Varnings-, bild-, ljud- och videoformat är mycket motståndskraftiga mot defekter och skador av detta skäl, verktyget kan inte upptäcka alla skadade filer.

check-mi kan med 100% förtroende upptäcka filer som har trasiga rubriker / metadata, trunkerade bildfiler (med strikt_nivå> 0) och enhets i / o-fel.

check-mi kan vanligtvis inte upptäcka alla mindre skador - t.ex. liten del av mediefilen skrivs över med olika värden. I detalj har jag testat strikt_nivå 1 med ett litet randomiserat experiment, utfört på en enda 5 MB jpeg-bild:

Skriva över en del (intervall) av bildfilen med nollor, du behöver intervallstorlek = 1024 KB för att kunna få 50% chans att upptäcka skadan. Om du skriver över en del (intervall) av bildfilen med olika slumpmässiga värden, får du cirka 85% detektionsförhållande för intervallstorlekar från 4096bytes till 1024Kbytes.

Om du känner till sätt att instruera Pillow, Wand och FFmpeg ska vara strängare vid avkodning, berätta för mig.

user3773048
2019-01-25 01:48:09 UTC
view on stackexchange narkive permalink

Det accepterade svaret hänvisar till användningen av jpeginfo, som är ett riktigt gammalt och underhållet verktyg skrivet i C (och inte heller mycket modulärt / utdragbart). Det verkar också som att det bara letar efter några specifika EXIF-datapunkter (skumma igenom källkoden i ~ 5 minuter).

IMO, ett bättre verktyg som heter filtyp, är väldigt lätt att använda - i princip kopiera och klistra in deras exempelkod och ändra filnamnet om du inte vet hur man kodar. Den kontrollerar magiska siffror som är associerade med vissa kända filtyper och låter dig veta vilken typ av fil du har att göra med.

Jag letar fortfarande efter fler lager än bara detta. Till exempel, om godtyckliga data lagras förbi (eller i) EXIF-metadata, eller efter de magiska siffrorna, kan det utgöra säkerhetsproblem. Jag fortsätter att undersöka fler säkerhetsåtgärder och hoppas att jag senare kommer att uppdatera det här svaret.

Här är exempelkoden kopierad från deras webbsida, för de lata:

  // Node.jsconst readChunk = kräver ('read-chunk'); const fileType = kräver ('file-type'); const buffer = readChunk.sync ('unicorn.png', 0, fileType.minimumBytes); fileType (buffert) ; // = > {ext: 'png', mime: 'image / png'}  

FYI, detta verktyg uppdateras ständigt (för 3 dagar sedan var den senaste uppdateringen, från och med mitt ursprungliga svar här), och de har för närvarande 3,691,850 hämtningar per vecka - så det är nog en bra indikation.

Typiska magiska nummerbaserade filtypsidentifierare fokuserar vanligtvis bara på de första n bytes, så det kanske inte hjälper med en delvis engagerad bildfil, vilket är grunden för frågan som ställs här. Det vill säga, det är mycket vanligt att ha en JPEG eller PNG som POSIX-filen (som fungerar på samma sätt) rapporterar korrekt, men kommer inte att återges eftersom mycket av informationen faktiskt saknas.


Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...