Problem description
Załamujące spostrzeżenie dotyczące fotografii i zgrywania zdjęć z lustrzanki Nikon przez Wifi programem WirelessMobileUtility na Androida - ten program od Nikona paskudnie degraduje jakość zdjęć (i z automatu pomniejsza je do rozmiaru 1620x - o tym akurat wiedziałem). Nie wiedziałem wcześniej o aż takim pogorszeniu jakości przez tę metodę zgrywania, teraz dopiero widze, że setki zdjęć, które robiłem lustrzanką, ma bardzo obniżoną jakość przez to że zgrywałem tą metodą…
Mam przykładowe zdjęcie 4496x3000 (3.6 MB). Zdjęcie pomniejszone przez ImageMagick z domyślnymi ustawieniami do rozmiaru 1620x waży 609KB, a z zaawansowanymi ustawieniami (-filter Lanczos -sampling-factor 1x1 -unsharp 1.5x1+0.7+0.02) waży 692KB i nie widać różnicy pomiędzy tymi trzema zdjęciami. Natomiast zdjęcie zgrane programem WMU waży 508KB i od razu widać, że jest bardzo rozmyte, gdy porówna się te cztery zdjęcia.. Dotychczas zawsze zgrywałem programem WMU i po czasie dopiero zauważyłem, że efekty finalne moich zdjęć na jakimś etapie stawały się rozmyte..
My workaround
Let’s take some single photo for further processing (say DSC_0002.JPG
), and let’s put it in a variable $f
:
f=DSC_0002.JPG
I use exiftool which outputs all EXIF data from JPG or other photo formats:
$ exiftool $f
ExifTool Version Number : 10.55
File Name : DSC_0002.JPG
Directory : .
File Size : 493 kB
File Modification Date/Time : 2018:02:03 15:37:28+01:00
File Access Date/Time : 1980:01:01 01:00:00+01:00
File Inode Change Date/Time : 2018:02:25 16:06:19+01:00
File Permissions : rwxr-xr-x
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
Exif Byte Order : Little-endian (Intel, II)
Make : NIKON CORPORATION
Camera Model Name : NIKON D5300
Orientation : Horizontal (normal)
X Resolution : 300
Y Resolution : 300
...
Sensitivity Type : Recommended Exposure Index
Exif Version : 0230
Date/Time Original : 2017:12:29 15:21:54
Create Date : 2017:12:29 21:07:25
Components Configuration : Y, Cb, Cr, -
Compressed Bits Per Pixel : 4
Exposure Compensation : 0
Max Aperture Value : 3.5
...
Scale Factor To 35 mm Equivalent: 1.5
Shutter Speed : 1/400
Create Date : 2017:12:29 21:07:25.00
Date/Time Original : 2017:12:29 15:21:54.10
Modify Date : 2017:12:29 21:07:25.00
Thumbnail Image : (Binary data 9032 bytes, use -b option to extract)
Circle Of Confusion : 0.020 mm
...
Extract EXIT data from all DSC_*
files, and save it in exif.txt
text file:
exiftool DSC_* > exif.txt
$ exiftool "$f" \
| grep 'Date/Time Original' \
| sed -e 's/[^:]\+//'
: 2017:12:29 15:21:54
: 2017:12:29 15:21:54.10
$ exiftool "$f" \
| grep 'Date/Time Original' \
| sed -e 's/[^:]\+//' \
| awk '{print length($0) " " $0}' \
| sort -nr \
| awk '{$1=""; print}' \
| head -n 1
: 2017:12:29 15:21:54.10
$ grep -E "^====== \
|`exiftool "$f" \
| grep 'Date/Time Original' \
| sed -e 's/[^:]\+//' \
| awk '{print length($0) " " $0}' \
| sort -nr \
| awk '{$1=""; print}'\
| head -n 1`$" ../../../exif.txt \
| grep -v '^======' -B1
======== DSC_01000.JPG
Create Date : 2017:12:29 15:21:54.10
Date/Time Original : 2017:12:29 15:21:54.10
Modify Date : 2017:12:29 15:21:54.10
Get the corresponding oritinal photo from hq/
directory which Date/Time taken matches exactly Date/Time of low quality file:
grep -E "^====== \
|`exiftool "$f" \
| grep 'Date/Time Original' \
| sed -e 's/[^:]\+//' \
| awk '{print length($0) " " $0}' \
| sort -nr \
| awk '{$1=""; print}' \
|head -n 1`$" ../../../exif.txt \
| grep -v '^======' -B1 \
| grep ^====== | awk '{print $2}'
DSC_01000.JPG
The final loop (solution)
for f in DSC_0*; do echo $f;
cp -f \
../../../$(grep -E "^====== \
|`exiftool "$f" \
| grep 'Date/Time Original' \
| sed -e 's/[^:]\+//' \
| awk '{print length($0) " " $0}' \
| sort -nr \
| awk '{$1=""; print}' \
|head -n 1`$" ../../../exif.txt \
| grep -v '^======' -B1 \
| grep ^====== \
| awk '{print $2}') \
hq;
done
Eventually, high quality versions of selected photos will land in hq/
directory.
BTW, I use also these tools foro photos viewing and browsing: qiv, gthumb.