Originally posted by acarlay but what conclusion did you come up with?
Well, my humble conclusions are:
Image degradation occurs when we do repeated edits from copies ( ie resampling in spatial or brightness domains), then saving the edited file, and editing the saved file again etc.
So we should always make one edit from the original master to get the final product.
I think this is the standard way and it has been mentioned many times on the PF by the experts.
When editing, we have to be careful not to commit an edit, then re do. By this I mean, for example, do not edit the color, press "OK" then go back and change the color again.
The correct way, would be >edit >undo, then redo, or , reload the original file and redo.
This applies to both spatial changes ( eg, resample to scale, crop, sharpness etc) and to brightness ( eg gamma, pull colors etc)
As far as the file type goes, I just re-ran the script using a lossless tiff
Here is the original file. It is a scan of a medium format C41 neg from the RB67 camera.
This is a 3 by 16 bit tiff with no compression, file size is 48MB
I reduced the numebr of generations to 50, and ran it on my filesystem ram to save hammering the ssd media
https://app.box.com/s/3stvy4kbm4w8ck93id524w99a7w5vrnk
Here is the 51st copied generation.
There is no degradation
https://app.box.com/s/9ldnummxohlmy8zbiy5d2foqs3u9wuz6
But here is the 51st generation after the file content has been rescaled down , the rescaled up.
The tif is butchered, even though the 51st generation is still shown as a 3 by 16 bit uncompressed tiff, by exiftool
https://app.box.com/s/ncj7zocboeq4ea5ifmkevcbi8thhn9dl
So the degradation is not due to the file type, it is due to successive changes being made to the image content itself.
Here is my script, in case anybody wants to see the method used.
#!/bin/bash
#Script for showing degradation of repeated photo edits jpg & tif. 160109
#
PR_wkdir=/dev/shm
#master file
PR_File=MultiSaveTest.tif
cd $PR_wkdir
yes|rm *$PR_File
cp RB67F400Sloan4FordT_2.tif 0$PR_File
PR_Num=0
while [ $PR_Num -le 50 ]; do
PR_Previous=$((PR_Num))
PR_Num=$((PR_Num+1))
#Uncomment to select:
# Change scale then revert
convert $PR_Previous$PR_File -resize 50% -quality 100% $PR_Num$PR_File
convert $PR_Num$PR_File -resize 200% -quality 100% $PR_Num$PR_File
#Change level then revert
#convert $PR_Previous$PR_File -level 50% -quality 100% $PR_Num$PR_File
#convert $PR_Num$PR_File -level 200% -quality 100% $PR_Num$PR_File
# No change, just save
#convert $PR_Previous$PR_File -quality 100% $PR_Num$PR_File
echo "**Scaled:"$file"_to_:"$PR_Num$PR_File
done