एक तरह से TPngObject का आकार बदलने और कोई लाभ नहीं हुआ पारदर्शिता + अल्फा चैनल बनाए रखने के लिए के लिए देखने के बाद, मैं GDI +जीडीआई + का उपयोग कर अल्फा चैनलों के साथ पीएनजी छवि का आकार कैसे बदलें?
यहाँ मेरी कोड है उपयोग करने के लिए कोशिश कर रहा हूँ, और यह ठीक काम करने के लिए लगता है। यह एक पीएनजी स्केल डाउन/अप करेगा। अब तक XP पर परीक्षण किया गया:
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;
मेरा प्रश्न: GetThumbnailImage
ऐसा करने का सही तरीका इस्तेमाल कर रहा है? मुझे कोई अन्य विधि नहीं मिली।
मैं समझने में असफल रहा कि पारदर्शिता/अल्फा यहां क्यों रखता है, लेकिन यह काम करता है :) धन्यवाद! – zig
आपका स्वागत है! अल्फा चैनल को आउटपुट बिटमैप प्रारूप के कारण संरक्षित किया गया है (जिसे मुझे स्पष्ट रूप से निर्दिष्ट करना पड़ता है भले ही यह अस्पष्ट अधिभार के कारण डिफ़ॉल्ट हो)। यदि आप उदा। 'PixelFormat32bppRGB', आप अल्फा चैनल खो देंगे। और प्रतिपादन स्वयं पारदर्शिता (शुद्ध जीडीआई में भी) मानता है। – TLama
धन्यवाद। बीटीडब्लू, GetThumbnailImage छवि को काफी अच्छी तरह से फिर से नमूना प्रतीत होता है। – zig