Hi,
I need to create a tool which will add branding of all JPG present in a folder (picture or text).
I know how to do it, but I find it quite long (~ 3 s / picture, 1 min for 19 pictures), knowing that I have hundreds of pictures to process.
Below is my code, using layers. I already fill the branding layer once. But what costs is the load of the background (6960x4640) and the LayersSaveMergedTo process
procedure TForm4.btnWatermarkProcessClick(Sender: TObject);
var
MyImageEn : TImageEnView ;
FolderName, NewFolderName, PictName : string ;
FileList : TStringDynArray ;
i : integer ;
Cnt1, Cnt2 : integer ;
begin
//---- For all "_VIS.JPG" files in background image folder, add a watermark and save to _Watermarked sub folder
// Get folder name
FolderName := ExtractFilePath( OpenPictureDialog1.FileName ) ;
// Create _Watermarked sub folder
NewFolderName := FolderName + '_Watermarked\' ;
if not DirectoryExists( NewFolderName ) then
ForceDirectories( NewFolderName ) ;
// Get FileList
FileList := TDirectory.GetFiles( FolderName, '*_VIS.JPG' ) ;
MyImageEn := TImageEnView.Create( nil ) ;
MyImageEn.IO.LoadFromFile( OpenPictureDialog1.FileName ) ;
// picture layers
if MyImageEn.LayersCount <> 2 then
begin
MyImageEn.LayersClear( false );
MyImageEn.LayersAdd(MyImageEn.Layers[0].Kind,
MyImageEn.Layers[0].PosX,
MyImageEn.Layers[0].PosY,
MyImageEn.Layers[0].Width,
MyImageEn.Layers[0].Height) ; // Append a new layer
end ;
MyImageEn.LayersCurrent := 1 ;
MyImageEn.IO.LoadFromFile( 'C:\_DEV\MyBranding.png' ) ;
// Set background as current layer
MyImageEn.LayersCurrent := 0 ;
// Process on folder files
for i := 0 to High( FileList ) do
begin
// Load picture as background
MyImageEn.IO.LoadFromFile( FileList[i] ) ;
// New pict name
PictName := StringReplace( FileList[i], FolderName, NewFolderName, [rfReplaceAll] ) ;
// Save picture
if FileExists( PictName ) then
System.SysUtils.DeleteFile( PictName ) ;
MyImageEn.LayersSaveMergedTo( PictName );
end;
MyImageEn.Free() ;
end;
Is there another faster way to do that ? Could I do the same without really loading the pictures ? I've made some tests on web sites dedicated to watermarking and it was much more faster.
Regards
ep