LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - General (https://www.linuxquestions.org/questions/linux-general-1/)
-   -   Rotate Image (Script) without changing "modified" date (https://www.linuxquestions.org/questions/linux-general-1/rotate-image-script-without-changing-modified-date-845084/)

tg0000 11-18-2010 10:00 AM

Rotate Image (Script) without changing "modified" date
 
Hello everyone, Joe Newbie here. Welcome to my first script; well sorta. I am actually modifying someone else's script and I need some help. The original script rotated image files to the left but it changed the "modified date stamp" which is something I didn't want.

Code:

#!/bin/bash
while [[ -n "$1" ]]; do
        #if a file and not a dir
        if [[ -f "$1" ]]; then
                #the images that I copy from my cell phone don't have exif headers
                #so I am using the -mkexif switch first to match the exif information
                #to the "created date" in the .jpg file.
                jhead -mkexif "$1"


                #by default, jpegtran will only copy some
                # Exif data, so we'll specify "all"
                jpegtran -rotate 270 -copy all -outfile "$1" "$1"

                #Then the next line uses the -ft switch which will match the "modified date"
                #using the exif date and time previously matched from the first line
                #of this script.
                jhead -ft "$1"

               
                #clear rotation/orientation tag so that
                # some viewers (e.g. Eye of GNOME)
                # won't be fooled
                jhead -norot "$1"
        fi
        shift
done


I've done batch files in DOS years ago so there are a lot of similarities of course. And I'm not looking for someone to just fix this for me but to also explain to me what I'm doing that is causing the incorrect behavior. Is there a more elegant way of doing this?

And BTW, it actually does what I'm asking it to do but only when I do something I consider quite odd.

1) I right click on the .jpg and select rotate left.
2) The file responds by flipping 180 degrees 'instead' of 90 degree counter clockwise.
3) I refresh the file manager and nothing happens.
4) I 'touch" the file with my pointer (it doesn't matter if I "touch" it with a left or a right mouse click) and it correctly orients itself.

It's important to note that the original script, before I made any edits, did not have this quirk whereas I needed to "touch" the file to get it to orient itself correctly. The 'original' script is in black; my additions are in blue.

Thanks,

colucix 11-19-2010 03:17 AM

It is not clear where the problem is, since the command
Code:

jhead -ft "$1"
should restore the time-stamp to the original creation date. Do you mean this command does not work for you?

tg0000 11-20-2010 02:32 AM

Quote:

Originally Posted by colucix (Post 4164088)
It is not clear where the problem is

The problem is pretty much covered in points 2 thru 4. Here they are again:


2) The file responds by flipping 180 degrees 'instead' of 90 degree counter clockwise.
3) I refresh the file manager and nothing happens.
4) I 'touch" the file with my pointer (it doesn't matter if I "touch" it with a left or a right mouse click) and it correctly orients itself.


All times are GMT -5. The time now is 11:28 AM.