Unit 1
Unit 1
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, UTF8Process, Forms, Controls, Graphics, Dialogs,
StdCtrls, Process, StrUtils;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
CheckBox1: TCheckBox;
lb: TLabel;
mm: TMemo;
ProcessUTF8_1: TProcessUTF8;
procedure Button1Click(Sender: TObject);
procedure CheckBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
private
function ReadTags(image_file:String): boolean;
procedure WriteTags;
procedure StartProcess;
public
end;
var
Form1: TForm1;
Path: String;
image_file, image_file_name: String;
implementation
{$R *.lfm}
procedure TForm1.WriteTags;
var
sl: TStringList;
begin
sl:= TStringList.Create;
sl.Add('-charset');
sl.Add('filename=utf8');
sl.Add('-overwrite_original');
sl.Add('-S');
mm.Text := StringReplace(mm.Text, #13#10, ' ', [rfReplaceAll]);
sl.Add('-exif:ImageDescription=' + mm.Text);
sl.Add(image_file);
sl.SaveToFile(Path+'argfile.txt');
try
StartProcess;
finally
sl.Clear;
sl.LoadFromStream(ProcessUTF8_1.Output);
lb.Caption:=image_file_name + ' -' + sl.Text;
sl.Free;
end;
end;
procedure TForm1.StartProcess;
begin
with ProcessUTF8_1 do
begin
Options := [poWaitOnExit, poUsePipes, poStderrToOutPut];
ShowWindow := swoHIDE;
Executable := Path + 'exiftool/exiftool.exe';
Parameters.Clear;
Parameters.Add('-@');
Parameters.Add(Path+'argfile.txt');
Execute;
end;
end;
end.