Скрипт вносит в jpg файл EXIF запись.
Только почему-то не может сохранить открытый файл:
так сохраняет данные в копию файла.
а пересохранить открытый файл не может:
Как заставить скрипт пересохранить открытый файл с записанными данными EXIF ?
Только почему-то не может сохранить открытый файл:
Код:
#include <GDIPlus.au3>
#include <file.au3>
$FN = 'путь к файлу.jpg'
$FN2 = 'путь к копи файла.jpg'
_GDIPlus_Startup ()
$hFile = _GDIPlus_ImageLoadFromFile($FN)
_GDIPlus_SetMetaData($hFile,'ImageDescription', "Тестовая строка")
_GDIPlus_ImageSaveToFile($hFile,$FN2)
_GDIPlus_ImageDispose($hFile)
_GDIPlus_Shutdown()
Filemove($FN2,$FN,1)
Func _GDIPlus_SetMetaData($hHandle,$sTagName, $vStr)
Local $tagPropertyItem = "ulong id; ulong length; ushort Type; ptr value"
Local $Struct_String, $Struct_Meta, $aResult, $PropertyTagType
$Struct_String=DllStructCreate("char[" & StringLen($vStr) +1 & "];")
DllStructSetData($Struct_String,1,$vStr)
$Struct_Meta = DllstructCreate($tagPropertyItem)
DllStructSetData($Struct_Meta,"ID",0x10E)
DllStructSetData($Struct_Meta,"Length",StringLen($vStr) +1)
DllStructSetData($Struct_Meta,"Type",2)
DllStructSetData($Struct_Meta,"Value",DllStructGetPtr($Struct_String))
$aResult = DllCall($ghGDIPDll, "int", "GdipSetPropertyItem", "hwnd", $hHandle, "ptr", DllStructGetPtr($Struct_Meta))
EndFunc
так сохраняет данные в копию файла.
а пересохранить открытый файл не может:
Код:
#include <GDIPlus.au3>
#include <file.au3>
$FN = 'путь к файлу.jpg'
_GDIPlus_Startup ()
$hFile = _GDIPlus_ImageLoadFromFile($FN)
_GDIPlus_SetMetaData($hFile,'ImageDescription', "Тестовая строка")
_GDIPlus_ImageSaveToFile($hFile,$FN)
_GDIPlus_ImageDispose($hFile)
_GDIPlus_Shutdown()
Func _GDIPlus_SetMetaData($hHandle,$sTagName, $vStr)
Local $tagPropertyItem = "ulong id; ulong length; ushort Type; ptr value"
Local $Struct_String, $Struct_Meta, $aResult, $PropertyTagType
$Struct_String=DllStructCreate("char[" & StringLen($vStr) +1 & "];")
DllStructSetData($Struct_String,1,$vStr)
$Struct_Meta = DllstructCreate($tagPropertyItem)
DllStructSetData($Struct_Meta,"ID",0x10E)
DllStructSetData($Struct_Meta,"Length",StringLen($vStr) +1)
DllStructSetData($Struct_Meta,"Type",2)
DllStructSetData($Struct_Meta,"Value",DllStructGetPtr($Struct_String))
$aResult = DllCall($ghGDIPDll, "int", "GdipSetPropertyItem", "hwnd", $hHandle, "ptr", DllStructGetPtr($Struct_Meta))
EndFunc
Как заставить скрипт пересохранить открытый файл с записанными данными EXIF ?