delphi4arab منتديات دلفي للعرب
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

جزاك الله خيرا