ich müsste zwei Operationen in einen Thread im Hintergrund laufen lassen (RasPi Linux, gtk2).
Frage 1, wie kann ich Text in ein JPEG Bild bringen, wenn das ganze in einem Hintergrundsthread läuft.
Code: Alles auswählen
try
AImage:= TJPEGImage.Create;
AImage.LoadFromFile(TempFilename);
AImage.Canvas.Font.Size:= coCamTextHeight;
AImage.Canvas.TextOut(coCamTextX,coCamTextY,coCamTextPre+XCode);
try
AImage.SaveToFile(TempFilename);
except
FLastError :=({$I %FILE%} + '->' +{$I %CURRENTROUTINE%}+ ' Kann Datei nicht speichern ' + TempFilename );
DebugLn(FLastError);
end;
finally
AImage.free
end;
Falls es wen interessiert, der Fehler lautet.
Die Thread's kenne ich[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
viewtopic.php?t=7525
viewtopic.php?p=51688#p51688
Deswegen auch die Frage geht dieses einfügen eines Textes in ein Jpeg-Bild mit FPImage auch im Thread ?!
Die zweite Frage, ist fpexif threadfest ?
Das geht scheinbar im Thread, ist aber das alte dExif. Ich würde es gerne auf fpExif umschreiben, deswegen die Frage ob der Code auch in einem Hintergrundsthread laufen kann ?
Code: Alles auswählen
// Read EXIF tags from image file
if FileExists(TempFilename) then begin
ImgData:= TImgData.Create;
try
ImgData.ProcessFile(TempFilename);
// if not exif, create new
if not ImgData.HasExif then
ImgData.CreateExifObj;
ImgData.ExifObj.CameraModel:='MyKamera';
ImgData.ExifObj.DateTimeOriginal:= Now;
ImgData.ExifObj.Artist:='Ich bin es' ;
if (XCode= '') then
ImgData.ExifObj.CameraMake:= FilenameOnly
else
ImgData.ExifObj.CameraMake:=XCode;
ImgData.ExifObj.ExifComment:=XCode;
ImgData.Comment := FilenameOnly;
ImgData.WriteEXIFJpegTo(TempFilename);
finally
freeandnil(ImgData);
end;
end;