Sign in to follow this  
Followers 0
tonse

Exiftool

4 posts in this topic

I want to retrieve IPTC data from jpg files. I intend to use exiftool for that. My question is: How can i get the data into Autoit. Something Like:

$var = run(Exiftool -Tag IPTC:City)

Exiftool is an exe file. You can pass al lot of parameters to read or write properties to images

I know how to use exiftool, but i don't find a way to use it in autoit

Thanks Tonse

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Read about the function StdoutRead in the helpfile. There is an example too.

Or start your exe with comspec and >log.txt at the end, also

Run(@ComSpec & ' /c exiftool >log.txt', @ScriptDir)

Then you can read the data from log.txt.

PS

>>log.txt will append the text to the end

>log.txt will erase old text first

Edited by dwerf

Share this post


Link to post
Share on other sites

I want to retrieve IPTC data from jpg files. I intend to use exiftool for that. My question is: How can i get the data into Autoit. Something Like:

$var = run(Exiftool -Tag IPTC:City)

Exiftool is an exe file. You can pass al lot of parameters to read or write properties to images

I know how to use exiftool, but i don't find a way to use it in autoit

Thanks Tonse

Try like this ! Posted Image

#include <Constants.au3>

$_ExePath = @ScriptDir & '\exiftool.exe'
$_Run = '"' & $_ExePath & '"' & ' SpeedDial2.png'
ConsoleWrite ( '--------- $_Run : ' & $_Run & @Crlf )   
$_Pid = Run ( $_Run, '', @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD )
Dim $_StderrRead='', $_StdoutRead='', $_StdReadAll='', $_ProcessTimerInit = TimerInit ( )   

While ProcessExists ( $_Pid ) 
    $_StderrRead = StderrRead ( $_Pid )
    If Not @error And $_StderrRead <> '' Then 
        ;ConsoleWrite ( "STDERR read : " & $_StderrRead & @Crlf )   
        $_StdReadAll = $_StdReadAll & $_StderrRead & @CRLF
    EndIf
    $_StdoutRead = StdoutRead ( $_Pid )
    If Not @error And $_StdoutRead <> '' Then 
        ;ConsoleWrite ( "STDOUT read : " & $_StdoutRead & @Crlf )   
        $_StdReadAll = $_StdReadAll & $_StdoutRead & @CRLF
    EndIf   
    If Round ( TimerDiff ( $_ProcessTimerInit ) / 1000 ) > 3 And $_StdReadAll ='' Then 
        If ProcessExists ( $_Pid ) Then ProcessClose ( $_Pid )
        ExitLoop
    EndIf
    Sleep ( 10 )
Wend

ConsoleWrite ( '!>------- $_StdReadAll : ' & $_StdReadAll & @Crlf )

It gives output like :

!>------- $_StdReadAll : ExifTool Version Number : 8.33

File Name : SpeedDial2.png

Directory : .

File Size : 551 kB

File Modification Date/Time : 2010:10:04 10:01:13+02:00

File Permissions : rw-rw-rw-

File Type : PNG

MIME Type : image/png

Image Width : 1920

Image Height : 1080

Bit Depth : 8

Color Type : RGB

Compression : Deflate/Inflate

Filter : Adaptive

Interlace : Adam7 Interlace

Pixels Per Unit X : 2834

Pixels Per Unit Y : 2834

Pixel Units : Meters

Image Size : 1920x1080

+>23:19:08 AutoIT3.exe ended.rc:0

+>23:19:09 AutoIt3Wrapper Finished

>Exit code: 0 Time: 1.535


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Thanks a lot so far.

I encounter a problem. If I add -IPTC:City to the Run command it returns only the IPTC City. But if i change that to anything else like: -IPTC:Location Then i don't get a value in return. ALthough i'm certain that IPTC Value is entered because i see it when i dont't add -IPTC to the Run command

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0