Я хочу преобразовать изображение PNG в оттенки серого с прозрачностью (без потери альфа-канала). Вероятно, с использованием компонентов TBitmap
и TPngImage
или Skia4Delphi.
От до
Но как? Я использую Delphi 10.3.3 VCL.
@fisi-pjm Skia4Delphi выглядит потрясающе. Однако примера кода того, что я хочу сделать, там нет.
Использование библиотеки Skia4Delphi:
uses
System.UITypes, Skia;
procedure TForm1.FormCreate(Sender: TObject);
var
LImage: ISkImage;
LSurface: ISkSurface;
LPaint: ISkPaint;
begin
LImage := TSkImage.MakeFromEncodedFile('..\..\delphi.png');
LPaint := TSkPaint.Create;
LPaint.ColorFilter := TSkColorFilter.MakeHighContrast(TSkHighContrastConfig.Create(True, TSkContrastInvertStyle.NoInvert, 0));
LSurface := TSkSurface.MakeRaster(LImage.Width, LImage.Height);
LSurface.Canvas.Clear(TAlphaColors.Null);
LSurface.Canvas.DrawImage(LImage, 0, 0, LPaint);
LSurface.MakeImageSnapshot.EncodeToFile('..\..\delphi-grayscale.png');
end;
Я думаю, вам стоит попробовать skia4delphi. Это платформа с открытым исходным кодом и имеет множество функций для управления изображениями. См. здесь несколько примеров: github.com/skia4delphi/skia4delphi/tree/main/Samples