![]() |
|
svg to png - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : svg to png (/showthread.php?tid=10852) |
svg to png - invocker - 30-05-2020 السلام عليكم ما هي الالية التي يتم تحويل بها من png الى svg code وهل يمكن عمل ذلك بالدلفي كمثال هذا code svg M0 180 l0 -180 180 0 180 0 0 180 0 180 -180 0 -180 0 0 -180z لصورة حرف ع RE: svg to png - merouane - 31-05-2020 وعليكم السلام ٍSVGLite أو DelphiSVG _________________________ باستعمال DelphiSVG: في المجلد vcl- المثال SvgViewer أضفت Button وكود الخاص بها (بعد اختيار رسمة معينة من القائمة الجانبية للبرنامج المثال): كود : // uses Vcl.Imaging.pngimage
procedure TForm1.Button2Click(Sender: TObject);
var
Bitmap: TBitmap;
PNG: TPngImage;
begin
Bitmap := TBitmap.Create;
try
with Bitmap do
begin
PixelFormat := pf32bit;
Transparent := True;
Width := trunc(FSVG.Width);
Height := trunc(FSVG.Height);
end;
FSVG.PaintTo(Bitmap.Canvas.Handle, MakeRect(0.0, 0.0, FSVG.Width,
FSVG.Height), nil, 0);
try
PNG := TPngImage.Create;
PNG.Assign(Bitmap);
PNG.SaveToFile('MYFILE.PNG');
finally
PNG.Free;
end;
finally
Bitmap.Free;
end;
end;RE: svg to png - invocker - 31-05-2020 بارك الله فيك اخي مروان لكن حسب الكود قهو يحول من svg الى png وانا اريد العكس لو ممكن الطريقة يدويا مثلا يباستخدام الهيكس او ما شابه ان امكن RE: svg to png - merouane - 31-05-2020 لقد اتبعت عنوان سؤالك !! المهم، تستطيع القيام بالمهمة باستعمال برامج خارجية عبر استدعائها من خلال الدلفي. 1- تحويل الصورة من PNG إلى PNM (عبر البرنامج ImageMagick الذي يوفر أداة التحويل) 2- تحويل PNM إلى SVG (عبر الأداة potrace - اجعل الملف potrace.exe في نفس مجلد برنامجك أو استدعيه من مساره، في المثال أدناه هو في نفس المجلد للبرنامج) 3- حذف الملف الوسيط PNM. بعد تثبيت البرنامج ImageMagick وتفعيل الخاصية إدراج مسار البرنامج في PATH (عند التثيبت)، الآن نستدعي الأداتان عبر الدلفي (المثال بسيط للإجابة فقط): كود : procedure TForm1.Button1Click(Sender: TObject);
var
sourceFile, destFile, FilePath: string;
txt: PWideChar;
begin
if OpenDialog1.Execute then
begin
sourceFile := OpenDialog1.FileName;
destFile := ChangeFileExt(sourceFile, '.PNM');
txt := PWideChar('/C magick convert ' + sourceFile + ' ' + destFile);
ShellExecute(0, nil, 'cmd.exe', txt, nil, SW_HIDE);
repeat
FilePath := FileSearch(destFile, '.')
until FilePath<>'';
txt := PWideChar('/C potrace ' + destFile + ' -s');
ShellExecute(0, nil, 'cmd.exe', txt, nil, SW_HIDE);
txt := PWideChar('/C rm ' + destFile );
ShellExecute(0, nil, 'cmd.exe', txt, nil, SW_HIDE);
end;
end;ImageMagick https://www.imagemagick.org/script/download.php#windows potrace https://github.com/skyrpex/potrace RE: svg to png - invocker - 31-05-2020 جزاك الله خيرا RE: svg to png - Eagle Master - 31-05-2020 وعليكم السلام ورحمة الله وبركاته يمكنك استخدام potrace فقط حول png الى bmp ثم افتح cmd potrace.exe -s 1.bmp -o 2.svg RE: svg to png - invocker - 31-05-2020 جزاك الله خيرا |