svg to png
#1
السلام عليكم

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

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

لصورة  حرف  ع


الرد
#2
وعليكم السلام

ٍ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;
[-] كل من 1 user says قال شكرا ل merouane على المشاركة المفيدة
  • invocker
الرد
#3
بارك الله فيك اخي مروان لكن حسب الكود قهو يحول من svg الى png وانا اريد العكس لو ممكن الطريقة يدويا مثلا يباستخدام الهيكس او ما شابه ان امكن
الرد
#4
لقد اتبعت عنوان سؤالك !!

المهم، تستطيع القيام بالمهمة باستعمال برامج خارجية عبر استدعائها من خلال الدلفي.
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
[-] كل من 1 user says قال شكرا ل merouane على المشاركة المفيدة
  • invocker
الرد
#5
جزاك الله خيرا
الرد
#6
وعليكم السلام ورحمة الله وبركاته

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

potrace.exe -s 1.bmp -o 2.svg
[-] كل من 1 user says قال شكرا ل Eagle Master على المشاركة المفيدة
  • invocker
الرد
#7
جزاك الله خيرا
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم