PHP แปลง SVG เป็น JPG องค์ประกอบที่ขาดหายไป

ฉันใช้ php imagemagic เพื่อแปลง svg เป็น jpg และฉันใช้คำสั่งด้านล่างสำหรับการแปลง

แปลง -density 250 source.svg target.jpg

ฉันสามารถแปลง svg เป็น jpg ได้สำเร็จ แต่องค์ประกอบบางอย่างใน svg หายไป โปรดตรวจสอบตัวอย่างด้านล่าง

ป้อน SVG ป้อนคำอธิบายรูปภาพที่นี่

เอาท์พุต JPG

ป้อนคำอธิบายรูปภาพที่นี่

ที่นี่คุณจะเห็นได้อย่างชัดเจนว่าเฉดสีเทาอ่อนที่ด้านข้างถูกแทนที่ด้วยสีขาว ใครสามารถแจ้งให้เราทราบวิธีการแก้ไขปัญหานี้

FYI นี่คือลิงค์สำหรับดาวน์โหลด SVG จริง

https://drive.google.com/file/d/1vC5yaXds7ogcsTWjaDzkXZZFyKzLCsgf/view?usp=sharing


person Aravinthan M    schedule 11.09.2018    source แหล่งที่มา


คำตอบ (2)


คุณใช้ตัวเรนเดอร์ SVG ใด อาจเป็น Imagemagick MSVG/XML ภายใน, ผู้รับมอบสิทธิ์ RSVG หรือ Inkscape (เพื่อเพิ่มฟังก์ชันการทำงาน) คุณสามารถค้นหาได้โดยเพิ่ม -verbose ลงในบรรทัดคำสั่งของคุณ

convert -verbose -density 250 source.svg target.jpg


ฉันใช้ Imagemagick 6.9.10.11 Q16 Mac OSX กับตัวเรนเดอร์ MSVG/XML ภายใน, RSVG 2.42.2_2 และ Inkscape 0.92.3_4 ทั้งสามให้ผลลัพธ์ที่แตกต่างกัน RSVG นั้นแย่ที่สุด Inkscape ดีที่สุด นี่คือผลลัพธ์ของฉันโดยใช้คำสั่งของคุณ

convert -density 250 MSVG:source.svg target_msvg.jpg


ป้อนคำอธิบายรูปภาพที่นี่

convert -density 250 RSVG:source.svg target_rsvg.jpg


ป้อนคำอธิบายรูปภาพที่นี่

convert -density 250 source.svg target_inkscape.jpg


ป้อนคำอธิบายรูปภาพที่นี่

โดยปกติ RSVG ทำได้ดีกว่า MSVG ของ Imagemagick แต่ที่นี่ดูเหมือนว่าจะแย่ลง อาจเนื่องมาจากวิธีที่ฉันแก้ไขไฟล์ delegates.xml เพื่อให้สามารถเรียกใช้ RSVG ในขณะที่ติดตั้ง Inkscape ได้ นอกจากนี้ ตัวเรนเดอร์ MSVG ยังได้รับการปรับปรุงในช่วงสองสามรุ่นล่าสุดอีกด้วย ดังนั้นเวอร์ชันเก่าอาจไม่ให้ผลลัพธ์ที่ดีนัก

person fmw42    schedule 11.09.2018
comment
คำสั่ง verbose แปลง -verbose -density 250 source.svg target.jpg ผลลัพธ์ด้านล่าง mvg:/tmp/magick-LSfBdmJW=>/tmp/magick-LSfBdmJW MVG 1246x1076 1246x1076+0+0 16 บิต DirectClass 15.5KB 0.430u 0:00.439 /var/www/html/img/simulator/tmp/575562/sourceImageTopFront .svg SVG 1246x1076 1246x1076+0+0 DirectClass 16 บิต 15.5KB 0.000u 0:00.000 /var/www/html/img/simulator/tmp/575562/sourceImageTopFront.svg=›/var/www/html/img/simulator /tmp/575562/sourceImageTopFront.jpg SVG 1246x1076 1246x1076+0+0 DirectClass 16 บิต 106KB 0.020u 0:00.019 - person Aravinthan M; 12.09.2018
comment
แปลง - รูปแบบรายการ | grep SVG คำสั่งนี้ให้ผลลัพธ์ต่ำกว่า MSVG -w+ ตัวเรนเดอร์ภายใน SVG ของ ImageMagick SVG -w+ Scalable Vector Graphics SVGZ -w+ Compressed Scalable Vector Graphics - person Aravinthan M; 12.09.2018
comment
ยังคงประสบปัญหาเดียวกัน โปรดทราบว่าฉันใช้ ImageMagic 7.0.8-11 - person Aravinthan M; 12.09.2018
comment
ติดตั้ง Inkscape แล้วคุณควรได้รับสิ่งที่ฉันมีด้านบนสำหรับผลลัพธ์ Inkscape หากนั่นเป็นผลลัพธ์ที่ถูกต้อง - person fmw42; 12.09.2018

ในที่สุดฉันก็พบวิธีแก้ปัญหาสำหรับสิ่งนี้ ฉันแปลง svg เป็นภาพแคนวาส (รูปแบบ base64) ผ่าน javascript และผ่าน php ฉันได้แปลงข้อมูล base64 เป็นภาพ jpg

person Aravinthan M    schedule 12.09.2018