var
APro: TxomProgress;
ADir: WideString;
i: Integer;
AImg: TImageItem;
AMs: TTntMemoryStream;
AFileName: WideString;
AHit: Integer;
AImgHandled: Boolean;
begin
if Selected.Count = 0 then
begin
Say('Select at least on item to export');
exit;
end;
ADir := WindowsMyPicturesDir;
ADir := ReadFromRegistry('Scripts', 'ExportThumbsPreviews', ADir);
if not WideSelectDirectory('Select output folder', ADir, ADir) then
exit;
ADir := WideIncludeTrailingBackslash(ADir);
WriteToRegistry('Scripts', 'ExportThumbsPreviews', ADir);
AHit := 0;
APro := TxomProgress.Create(nil);
APro.Max := Selected.Count;
for i := 0 to Selected.Count - 1 do
begin
AImg := Selected.Items[i];
AImgHandled := False;
APro.Pos := i + 1;
APro.ProgressText := AImg.FileNameOnly;
AMs := TTntMemoryStream.Create;
try
AMs.Clear;
if Thumbnailer.LoadRawPreviewStream(AImg.GUID, AMs) then
begin
// thumbs/previews are always JPG formatted
AFileName := ADir + WideChangeFileExt(AImg.FileNameOnly, '') + '_preview.jpg';
if not WideFileExists(AFileName) then
begin
//Say2(AMs.Size, AFileName);
AMs.SaveToFile(AFileName);
AImgHandled := True;
end;
end;
if Thumbnailer.LoadPreviewStream(AImg.GUID, AMs) then
begin
// thumbs/previews are always JPG formatted
AFileName := ADir + WideChangeFileExt(AImg.FileNameOnly, '') + '_adjust.jpg';
if not WideFileExists(AFileName) then
begin
//Say2(AMs.Size, AFileName);
AMs.SaveToFile(AFileName);
AImgHandled := True;
end;
end;
AMs.Clear;
if Thumbnailer.LoadThumbStream(AImg.GUID, AMs) then
begin
// thumbs/previews are always JPG formatted
AFileName := ADir + WideChangeFileExt(AImg.FileNameOnly, '') + '_thumb.jpg';
if not WideFileExists(AFileName) then
begin
//Say2(AMs.Size, AFileName);
AMs.SaveToFile(AFileName);
AImgHandled := True;
end;
end;
if AImgHandled then
AHit := AHit + 1;
finally
AMs.Free;
end;
end;
APro.Free;
Say2(
'Completed',
IntToStr(AHit) + ' from the ' + IntToStr(Selected.Count) + ' selected files have been stored.'
);
end;
|