المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018
السلام عليكم
ما هي الالية التي يتم تحويل بها من png الى svg code وهل يمكن عمل ذلك بالدلفي كمثال هذا code svg
M0 180 l0 -180 180 0 180 0 0 180 0 180 -180 0 -180 0 0 -180z
لصورة حرف ع
المشاركات : 334
المواضيع 83
:
: 17
الإنتساب : Feb 2008
وعليكم السلام
ٍ
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;
المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018
بارك الله فيك اخي مروان لكن حسب الكود قهو يحول من svg الى png وانا اريد العكس لو ممكن الطريقة يدويا مثلا يباستخدام الهيكس او ما شابه ان امكن
المشاركات : 334
المواضيع 83
:
: 17
الإنتساب : Feb 2008
لقد اتبعت عنوان سؤالك !!
المهم، تستطيع القيام بالمهمة باستعمال برامج خارجية عبر استدعائها من خلال الدلفي.
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
المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018
المشاركات : 7
المواضيع 2
:
: 18
الإنتساب : Jul 2019
وعليكم السلام ورحمة الله وبركاته
يمكنك استخدام potrace فقط حول png الى bmp ثم افتح cmd
potrace.exe -s 1.bmp -o 2.svg
المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018