delphi4arab منتديات دلفي للعرب

نسخة كاملة : svg to png
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

ما هي الالية التي يتم تحويل بها من png الى svg code  وهل يمكن عمل ذلك بالدلفي كمثال هذا code svg 

M0 180 l0 -180 180 0 180 0 0 180 0 180 -180 0 -180 0 0 -180z

لصورة  حرف  ع


وعليكم السلام

ٍ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;
بارك الله فيك اخي مروان لكن حسب الكود قهو يحول من svg الى png وانا اريد العكس لو ممكن الطريقة يدويا مثلا يباستخدام الهيكس او ما شابه ان امكن
لقد اتبعت عنوان سؤالك !!

المهم، تستطيع القيام بالمهمة باستعمال برامج خارجية عبر استدعائها من خلال الدلفي.
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
جزاك الله خيرا
وعليكم السلام ورحمة الله وبركاته

يمكنك استخدام potrace فقط حول png الى bmp ثم افتح cmd

potrace.exe -s 1.bmp -o 2.svg
جزاك الله خيرا