2011-10-15 28 views
5

Tôi có một SVG với nhiều đa giác:Crop và SVG quy mô để PNG sử dụng ImageMagick, mà không pixellation

https://github.com/barrycarter/bcapps/blob/master/sample-data/current-temps.svg

trông hơi như thế này:

enter image description here

Xén này và chuyển đổi tới PNG hoạt động tốt:

convert -crop 100x100+200+150 current-temps.svg /tmp/exhb2.png 

enter image description here

Cắt xén và mở rộng quy mô, tuy nhiên, thất bại:

convert -crop 100x100+200+150 -scale 1000x750 current-temps.svg /tmp/exhb3.png 

enter image description here

Làm thế nào để làm cho ImageMagick "phóng to" các SVG trước khi cắt xén?

(Tôi nhận ra ImageMagick chỉ có thể đọc, không biết viết, định dạng SVG, nhưng nó vẫn sẽ có thể làm những gì tôi muốn?)

EDIT/SOLVED:

Cảm ơn, robermorales.

inkscape -z -e out4.png -w 1000 -h 1000 -a 200:200:400:400 current-temps.svg 

(ví dụ) làm việc như một sự quyến rũ.

Tôi cũng nhận ra rằng sao chép SVG, chỉnh dòng transform:

<g transform="scale(3,3) rotate(-90) translate(-90,180)"> 

và sau đó chuyển sang PNG là một giải pháp khác.

Trả lời

6

Thử thực hiện quy mô trước khi cắt.

Tuy nhiên, làm điều đó bằng cách sử dụng CLI inkscape dễ dàng hơn.

Xin lỗi vì không có liên kết, afk

1

Đừng cắt tập tin SVG lên thành PNG. Bạn có thể sử dụng viewBox để xác định lại khu vực cắt sau đó chuyển đổi SVG đó thành PNG ở giải pháp cao nhất có thể. Kiểm tra bài đăng này https://www.sarasoueidan.com/blog/svg-coordinate-systems/ giải thích xem boxBox là gì và bạn sẽ có ý tưởng của mình.

0

Cú pháp ImageMagick đúng ở đây là đọc đầu vào, sau đó cắt, sau đó thay đổi kích thước. Xem http://www.imagemagick.org/Usage/basics/#why Mặc dù đó không phải là vấn đề. Vấn đề là -scale sẽ nhân rộng các pixel và do đó làm cho nó khối ô vuông. Bạn nên thay thế -scale bằng -resize. Điều đó sẽ mượt mà hơn, nhưng mờ cho số lượng phóng đại bạn đang yêu cầu. Hãy thử lệnh này:

convert current-temps.svg -crop 100x100+200+150 -resize 1000x750 exhb3.png 
Các vấn đề liên quan