2012-03-02 73 views
45

Tôi muốn chuyển đổi hình ảnh SVG thành tệp PNG với nền trong suốt và cạnh chống răng cưa (sử dụng pixel bán trong suốt). Thật không may tôi không thể có được ImageMagick để làm chống răng cưa, các cạnh luôn luôn trông khủng khiếp. Dưới đây là những gì tôi đã thử:Chuyển đổi SVG thành PNG trong suốt với khử răng cưa, sử dụng ImageMagick

convert +antialias -background transparent in.svg -resize 25x25 out.png 

Bất kỳ ý tưởng hoặc công cụ dòng lệnh nào khác mà tôi có thể sử dụng?

Trả lời

48

Inkscape sẽ làm điều này:

inkscape \ 
    --export-png=out.png --export-dpi=200 \ 
    --export-background-opacity=0 --without-gui in.svg 
+1

Giải pháp đầu tiên tôi tìm thấy là giữ bảng màu của một số SVG, ví dụ: logo của Apache NiFi (https://nifi.apache.org/assets/images/apache-nifi-logo.svg). – timss

15

Trên thực tế, đọc tài liệu ImageMagick:

-antialias

Bật/Tắt của đồ họa của anti-aliasing pixel khi vẽ phông chữ và dòng . Theo mặc định, các đối tượng (ví dụ: văn bản, đường, đa giác, v.v.) được chống răng cưa khi được vẽ. Sử dụng + antialias để vô hiệu hóa việc bổ sung các pixel cạnh chống răng cưa. Điều này sau đó sẽ giảm số lượng màu
được thêm vào hình ảnh chỉ với màu được vẽ trực tiếp. Tức là, không có hỗn hợp> màu được thêm khi vẽ các đối tượng đó.

+ antialias thực sự sẽ vô hiệu hóa khử răng cưa.

59

Như một lưu ý phụ, tôi thấy rằng việc minh bạch là một chút phức tạp. Thay vì sử dụng trong suốt, tôi đã phải sử dụng không có.

convert -background none in.svg out.png 
+0

Ít nhất tại thời điểm này (6.8.6), nó cũng hoạt động với _transparent_. –

+3

Cả hai 'không' và 'trong suốt' tạo nền trắng mờ cho tôi. Không minh bạch. Tôi đang sử dụng 6.8.8-3 trên Mac – petrsyn

+2

'-background none' làm việc cho tôi, ImageMagick 6.8.6-6 trên mac – commonpike

9

Con đường tôi đã học được cách để làm điều này là từ các phương pháp tìm thấy ở đây: How to convert a .eps file to a high quality 1024x1024 .jpg?

Đó là ý tưởng giống như @ halfer của giải pháp với inkscape --Để cắm lên các Sở KH & ĐT đầu tiên - nhưng bạn có thể thực hiện điều tương tự chỉ trong imagemagick bằng cách sử dụng tùy chọn -density.

convert -density 200 in.svg -resize 25x25 -transparent white out.png 
Các vấn đề liên quan