how to detect corrupted file

Paul Norman paul at paulanorman.info
Thu Apr 20 08:42:08 BST 2023


Thanks Fredric.

Your way

%exiv2FullPath%   -pp -q "%i" >> results.txt

looks correct—as of course it is,
but on Windows 10 only yields:

Preview 1: image/jpeg, 320x240 pixels, 13855 bytes
Preview 1: image/jpeg, 320x240 pixels, 13235 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes
Preview 1: image/jpeg, 176x128 pixels, 40576 bytes

When I use:

del results.txt & for /r  %i in (*.jpg *.jpeg *.png *.crw *.dng) do 
%exiv2FullPath%  "%i"  -pp -q  >> results.txt

It is of course ignoring my incorrectly placed options/switches(?)  -pp 
-q – and so instead I get the full results set, as if for just:
%exiv2FullPath%  "%i"
—like:

File name       : E:\Digikam\images\Phone\2022 
Apr\OpenCamera\IMG_20201011_191442.jpg
File size       : 2547402 Bytes
MIME type       : image/jpeg
Image size      : 4096 x 3072
Thumbnail       : image/jpeg, 13855 Bytes
Camera make     : motorola
Camera model    : moto g(7) power
Image timestamp : 2020:10:11 19:14:42
File number     :
Exposure time   : 1/33 s
Aperture        : F2
Exposure bias   :
Flash           : No, auto
Flash bias      :
Focal length    : 3.9 mm
Subject distance:
ISO speed       : 155
Exposure mode   :
Metering mode   : Center weighted average
Macro mode      :
Image quality   :
White balance   : Auto
Copyright       :
Exif comment    :

etc ...

... Which is what I thought we needed :-)
and so why wasn’t aware my placement of the switches/options was incorrect.

I have some self corrupted .jpg(s) in my directory tree,
but I am not seeing them in the above list of the style of:
%exiv2FullPath%   -pp -q "%i" >> results.txt

Preview 1: image/jpeg, 320x240 pixels, 13855 bytes
... etc

— And that alos isn't showing me the file path/names of any of them.

Paul


On 14/04/2023 10:59 pm, frederic chaume wrote:
> Hi Paul
>
> 1st feedback,
> syntax of command should be
> %exiv2FullPath%   -pp -q "%i" >> results.txt
>
> and seems the >> doens't catch the exception,
>
> the exception was missing in the result.txt, but really exist
>
> D:\images\test> %exiv2FullPath%  -pp -q 
> 2023-02-28\P2280067_DxO-corrupted.jpg
> Exiv2 exception in print action for file 
> 2023-02-28\P2280067_DxO-corrupted.jpg:
> 2023-02-28\P2280067_DxO-corrupted.jpg: The file contains data of an 
> unknown image type
>
> regards
> Frederic
>
>
> Le 14/04/2023 à 12:07, frederic chaume a écrit :
>> Hi Paul
>>
>> thanks a lot, that will be very useful, I will test it next week
>>
>> Fyi , I got the options from https://exiv2.org/manpage.html
>>
>> regards
>> frederic
>>
>>
>>
>>
>> Le 14/04/2023 à 05:54, Paul Norman a écrit :
>>>
>>> Hi Bob,
>>>
>>> Yes file names passed in that way can have unknown things happening 
>>> behind the scenes :-)
>>>
>>> PowerShell can help here, but Dos can still do it effectively and 
>>> quickly, as you are working in it, here are some dos shell command 
>>> lines you could try executing.
>>> (If you find this working, it could be converted into a batch file, 
>>> once any other needed modifications have been worked out later. Note 
>>> that %-s would need to be changed to %% in a .bat batch file.)
>>>
>>> I downloaded a working copy of from exiv2 from
>>> https://exiv2.org/download.html#license
>>>
>>> Looks like you got your option commands from(?):
>>> https://exiv2.org/sample.html
>>>
>>> Locally, open a dos prompt up at the top of the directory tree you 
>>> want to explore.
>>> If all you can see is PowerShell, then when that opens type :-
>>>
>>> cmd <Enter>
>>>
>>> Again, make sure you are in the top of the directory tree you want 
>>> to explore.
>>>
>>> The overall system PATH does not appear to need alteration, as 
>>> exiv2.exe when called directly, appears to find all that it needs 
>>> locally.
>>> So first set your exiv2.exe file's full location, change the path to 
>>> fit your setup, using quotes especially if you have any spaces in 
>>> your .exe directory path. :-
>>>
>>> set exiv2FullPath="G:\utils\exiv2-0.27.6-2019msvc64\bin\exiv2.exe"
>>>
>>> And alter the below to your situation (change the *.exts to whatever 
>>> you need, fewer or more, leaving a space between them):
>>>
>>> Then execute each of these  lines one after the other :-
>>>
>>> del results.txt & for /r  %i in (*.jpg *.jpeg *.png *.crw *.dng) do 
>>> %exiv2FullPath% "%i"  -pp -q >> results.txt
>>>
>>> find ": 0 x 0" results.txt > possible_corrupt.txt
>>>
>>> notepad results.txt & notepad possible_corrupt.txt
>>>
>>> <-- Try the above first, but if necessary, in the second command 
>>> line above, change ": 0 x 0" to whatever is signifying your corrupt 
>>> file(s) as shown in the file: results.txt. Copy and paste the needed 
>>> text out of results.txt between the "quote marks" as I suspect 
>>> otherwise invisible tabs U+0009 could be being used.
>>>
>>> Close the notepads: for results.txt and poss_corrupt.txt - when you 
>>> want to run the command again over the same directory tree.
>>>
>>> At worst you can scan though the file: results.txt manually in notepad.
>>>
>>> N.B.
>>> Just note that the file: results.txt  will get overwritten each time 
>>> you run the main command, so copy or rename it first if you want to 
>>> keep it :-)
>>>
>>> Hope that this will help you,
>>>
>>> Kindest regards,
>>> Paul
>>>
>>>
>>> On 14/04/2023 2:16 am, plowmail2010 at gmail.com wrote:
>>>>
>>>> Using Windows 7.
>>>>
>>>> I could not get wildcards to work in exiv2.
>>>> The manual says  "$ exiv2 *.jpg Prints a summary of the Exif 
>>>> information for all JPEG files in the directory."
>>>> But that gives me "*.jpg: Failed to open the file".
>>>>
>>>> Also, while fiddling with this, the length of exiv2.exe went to 0. 
>>>> Maybe the program got tired of my fiddling, or my computer is about 
>>>> to explode.
>>>>
>>>> Bob
>>>>
>>>>
>>>> On 4/13/2023 7:02 AM, frederic chaume wrote:
>>>>> Hi All
>>>>>
>>>>> I found an option using exiv2 under windows
>>>>>
>>>>> >bin\exiv2.exe -pp -q P2280067_DxO-corrupted.jpg
>>>>> Exiv2 exception in print action for file P2280067_DxO-corrupted.jpg:
>>>>> P2280067_DxO-corrupted.jpg: The file contains data of an unknown 
>>>>> image type
>>>>>
>>>>> >bin\exiv2.exe -pp -q P2280067_DxO.jpg
>>>>> Preview 1: image/jpeg, 317x237 pixels, 17356 bytes
>>>>>
>>>>> >bin\exiv2.exe -pp -q .\P2280067.ORF
>>>>> Preview 1: image/jpeg, 160x120 pixels, 9080 bytes
>>>>> Preview 2: image/jpeg, 3200x2400 pixels, 1060974 bytes
>>>>>
>>>>> I think that could be a good solution to find corrupted jpeg. 
>>>>> Based on this I have some thought
>>>>> - as exiv2 is native with Digikam, I guess such error could be 
>>>>> visible? *Is there some "debug level" or some logs somewhere that 
>>>>> could report such errors ?*
>>>>> - I'm not expert on coding so don't know how to translate such 
>>>>> command to a recursive search on a set of folders?
>>>>> - seems to apply to raw also , but I don't have corrupted raw to 
>>>>> perform the test
>>>>>
>>>>> thanks to share your feedbacks and may be other option
>>>>>
>>>>> Frederic
>>>>>
>>>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/digikam-users/attachments/20230420/e67b41e4/attachment-0001.htm>


More information about the Digikam-users mailing list