TPngObject yeniden boyutlandırmak ve boşuna şeffaflık + alfa kanallarını korumak için bir yol arıyoruz sonra ben GDI İşte +GDI +? Kullanarak PNG görüntüsünü Alfa kanalları ile yeniden boyutlandırma?
benim kodudur kullanmaya çalışıyorum ve o iyi iş gibi görünüyor. bir PNG'yi küçültecek/büyütecektir. şimdiye kadar XP üzerinde test:
uses GDIPAPI, GDIPOBJ, GDIPUTIL;
procedure TForm1.Button1Click(Sender: TObject);
var
encoderClsid: TGUID;
stat: TStatus;
img, img_out: TGPImage;
begin
img := TGPImage.Create('in.png'); // 200 x 200
img_out := img.GetThumbnailImage(100, 100, nil, nil);
GetEncoderClsid('image/png', encoderClsid);
img_out.Save('out.png', encoderClsid);
img_out.free;
img.Free;
end;
Benim sorum: GetThumbnailImage
Bunu yapmanın doğru yolu kullanıyor? Başka bir yöntem bulamadım. Ben GetThumbnailImage
yöntemin kullanılarak sanmıyorum
Saydamlık/alfanın neden burada/nasıl kaldığını anlamıyorum, ama işe yarıyor :) teşekkür ederim! – zig
Rica ederim! Alfa kanalı, çıkış bitmap formatı nedeniyle korunur (belirsiz aşırı yüklenmeden dolayı varsayılan olsa bile açıkça belirtmem gerekiyordu). Ör. 'PixelFormat32bppRGB', alfa kanalı kaybedersiniz. Ve kendi kendini şeffaflaştırmayı (salt GDI'da bile) düşünür. – TLama
Teşekkürler. BTW, GetThumbnailImage, görüntüyü da oldukça güzel bir şekilde örnekliyor gibi görünüyor. – zig