مكتبة PNG لقراءة وكتابة صور PNG مع فئة TBITMAP32 من مكتبة GR32.
من أجل استخدام المكتبة تأكد من استخدام وحدة GR32_PNG. تستخدم هذه الوحدة gr32_portablenetworkgraphics لقراءة وكتابة ملفات PNG ، مما يجعل من الضروري إضافة الملف إلى مشروعك أيضًا. أو مجرد إضافة الدليل إلى مسار المكتبة.
أبسط طريقة لتحميل PNG إلى مثيل TBITMAP32 هي باستخدام:
LoadBitmap32FromPNG(Bitmap: TBitmap32; const Filename: string);
يمكنك التحقق مما إذا كان الملف هو ملف PNG صالح باستخدام
function IsValidPNG(const Filename: string): Boolean;
إذا جاء ملف PNG من دفق يمكن للمرء استخدامه أيضًا
LoadBitmap32FromPNG(Bitmap: TBitmap32; Stream: TStream);
مثل في
var
MemoryStream: TMemoryStream;
begin
MemoryStream := TMemoryStream.Create;
try
MemoryStream.LoadFromFile(FileName);
LoadBitmap32FromPNG(Bitmap, Stream);
finally
MemoryStream.Free;
end;
end;
قد يكون هذا مفيدًا بشكل خاص إذا تم تضمين ملف PNG كمورد في القابل للتنفيذ. في هذه الحالة ، يمكنك بسهولة استخدام TresourCestream
لحفظ محتوى مثيل TBITMAP32 إلى ملف PNG أو دفق الوظائف:
procedure SaveBitmap32ToPNG(Bitmap: TBitmap32; FileName: string);
procedure SaveBitmap32ToPNG(Bitmap: TBitmap32; Stream: TStream);
يمكن استخدامها.
إذا كنت تستخدم الوظائف البسيطة ، فلن تتمكن من تتبع التقدم أثناء التحميل. للقيام بذلك ، يجب إنشاء مثيل لـ TportableNetworkGraphic32 وتحميل ملف PNG يدويًا. قبل التحميل فعليًا ، يمكنك تحديد معالج OnProgress لتتبع التقدم. سيبدو الرمز بعد ذلك:
with TPortableNetworkGraphic32.Create do
try
OnProgress := OnProgressHandler;
LoadFromFile(Filename);
AssignTo(YourBitmap); // can be Image32.Bitmap for example
finally
Free;
end;
حيث قد يبدو أن onprogresshandler مثل هذا:
procedure TForm1.OnProgressHandler(Sender: TObject; Percent: Single);
begin
ProgressBar.Position := Round(Percent);
end;
إذا كنت ترغب في تغيير بعض الإعدادات أثناء التوفير ، فأنت بحاجة إلى القيام بذلك يدويًا أيضًا. يمكن أن يبدو الرمز هكذا:
with TPortableNetworkGraphic32.Create do
try
AssignTo(YourBitmap); // can be Image32.Bitmap for example
Interlaced := imAdam7; // save as interlaced png file
SaveToFile(Filename);
finally
Free;
end;
مع الوضع الحالي للتنفيذ ، لا يمكن تغيير كل شيء دون إنهاء ملف PNG غير صالح. على سبيل المثال ، يمكنك تحويل الصورة لاستخدام الباليت ثم تغيير أو حذف اللوحة قبل حفظها. إن القيام بذلك لن يعطيك خطأً ، ولكن على الأرجح لن تكون الصورة قابلة للقراءة من قبل البرامج الأخرى (أو على الأقل مختلفة عن الصورة الأصلية).