Ứng dụng dòng lệnh để chuyển đổi SVG sang PNG trên Mac OS X


167

Có chương trình dòng lệnh nào có thể chuyển đổi SVG sang PNG, chạy trên Mac OS X không?

Chỉnh sửa : Dylan B đã có câu trả lời tốt với ImageMagick. Để tham khảo, để cài đặt ImageMagick với hỗ trợ SVG trên Mac OS X bằng MacPorts, hãy làm

port install imagemagick +rsvg

2
Tôi đã tìm thấy một cách nếu bạn có Google Chrome ... và không cần cài đặt bất kỳ thứ gì khác: superuser.com/questions/134679/
mẹo

cairosvg.org hoạt động cho python3 và dường như không có vấn đề gì. pip3 install cairosvg
JayRizzo

Câu trả lời:


234

Hoặc không cài đặt bất cứ thứ gì:

qlmanage -t -s 1000 -o . picture.svg 

Nó sẽ tạo ra hình ảnh.svg.png rộng 1000 pixel.

Tôi đã thử nghiệm nó chỉ trên OS X 10.6.3.


38
Thật không may clip này hình ảnh đến một hình vuông.
Martijn Pieters

7
À, qlmanage -tđưa ra hình thu nhỏ được sử dụng bởi Quick Look (trong Finder, v.v.). Ý tưởng thông minh. Thật không may, những hình thu nhỏ này có thể có lỗi, đặc biệt là khi có văn bản liên quan.
ShreevatsaR

7
Điều này tạo ra hình ảnh với tệp svg trong góc phần tư thứ nhất. Không tự động cắt. Cố gắng chuyển đổi tập tin từ dự án danh từ - muốn điều này làm việc.
Alex Cook

7
Giải pháp này không tính đến tính minh bạch. Công cụ rsvg-converttrong câu trả lời của @ ahti đã hoạt động trước đây đối với tôi.
BenR

3
Đặt cả tham số chiều rộng và chiều cao sau khi -stùy chọn không hoạt động với tôi. Vẫn trồng nó đến một hình vuông. Rất bực bội!
Erik van der Neut

107

Tôi thấy rằng đối với tôi công cụ tốt nhất cho công việc là rsvg-convert.

Nó có thể được tìm thấy trong brew with brew install librsvgvà được sử dụng như thế này:

rsvg-convert -h 32 icon.svg > icon-32.png

(Ví dụ này tạo png cao 32px. Chiều rộng được xác định tự động.


Đây là người duy nhất làm việc cho tôi trên Mavericks và commons.wik
mega.org/wiki/iêu

Trên thực tế, cái này đã hoạt động, trong khi convertlỗi của ImageMagick và không thể chuyển đổi một SVG phức tạp
Brice

7
Đây là giải pháp tốt nhất tôi tìm thấy cho OS X Yosemite +1!
Greg Martin

Điều này thất bại đối với một số SVG của tôi, thật kỳ lạ. Câu qlmanagetrả lời đã có hiệu quả với tất cả chúng nhưng đặt một nền trắng mà tôi không muốn.
sudo

1
Với rsvg-convert, .png kết quả có kích thước phù hợp, nhưng hình ảnh xuất hiện toàn màu đen thay vì màu gốc. Với qlmanagehình ảnh được cắt thành hình vuông. Vẫn đang tìm kiếm một giải pháp :-(
Erik van der Neut

43

ImageMagick là một trình chỉnh sửa hình ảnh dòng lệnh cực kỳ linh hoạt, có thể sẽ cạnh tranh với Photoshop nếu bạn biết, nó có GUI. Nhưng ai cần những dù sao đi nữa. : P

Một cái gì đó như sau sẽ chuyển đổi một .svg thành .png, sau khi cài đặt:

$ convert picture.svg picture.png

Bản gốc .svg không bị xóa.


loại có một giao diện, trong display.
Ignacio Vazquez-Abrams

1
Khi tôi cài đặt ImageMagick với Fink, tôi không thể chuyển đổi Svg sang png - có một số lỗi. Hóa ra tôi cũng cần cài đặt librsvg2-bin.
tst

Nếu librsvg2-bin không được cài đặt (như trên OS X) thì điều này sẽ thất bại. Không thể tìm cách cài đặt nó trên OS X.
John Sheehan

3
Điều này sẽ không hoạt động tốt nếu bạn muốn thay đổi kích thước SVG vì nó tạo ra hình ảnh mờ.
Behrang

3
Nó cũng không chuyển đổi tất cả các tệp SVG một cách chính xác; ít nhất qlmanage có tất cả các phần của hình ảnh.
Johan

28

Inkscape với Giao diện dòng lệnh tạo ra kết quả tốt nhất cho tôi:

/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg

Điều tốt là, bạn có thể chỉ định kích thước pixel chính xác của hình ảnh kết quả, mà không phải lộn xộn với mật độ.


cái này hiệu quả với tôi - có một SVG lớn hơn được tạo bằng Inkscape
matheszabi

Đây là phương pháp duy nhất khiến cho Svg viết tay của tôi chính xác
Griffin

Chuyển đổi không tạo ra các tệp PNG tốt từ SVG. Sử dụng Inkscape là cách tốt nhất mà tôi đã tìm thấy cho đến nay.
ol_v_er

Điều này làm việc cho tôi, nhưng tạo ra các tập tin cực kỳ mờ.
Marcin

3
Tôi gặp sự cố khi tìm tệp nên chạy nó nhưinkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
Andrei

16

OK, tôi đã tìm thấy một cách đơn giản để làm điều đó trên Mac nếu bạn có Google Chrome.

Trong một câu, đó là để xem svghình ảnh trong một trang web (phải ở trong một htmltệp), nhấp chuột phải vào hình ảnh và chọn "Sao chép hình ảnh" và dán vào ứng dụng Xem trước.

Các bước:

  1. Tải xuống hoặc có svgtệp trong ổ cứng của bạn, giả sửsomefile.svg
  2. Bây giờ, trong cùng một thư mục, chỉ cần tạo một tệp html tmp.htmlcó chứa dòng này:<img src="somefile.svg">
  3. Bây giờ, hãy mở tệp html đó trong Google Chrome
  4. Bạn nên xem hình ảnh. Bây giờ chỉ cần nhấp chuột phải vào hình ảnh và chọn "Sao chép hình ảnh"
  5. Truy cập Ứng dụng xem trước của Mac và chọn, "File -> New from Clipboard"
  6. Bây giờ File -> Savecác tập tin và bạn có các pngtập tin. (hoặc các loại tệp khác).

Điều này đã được thử nghiệm trên Chrome hiện tại (phiên bản 48.0) trên Mac OS X El Capitan.

Cập nhật : Tôi không chắc liệu đó có phải là do một số hạn chế do Google Chrome áp đặt hay không. Tôi chỉ thử một tệp SVG bằng Chrome 58.0 và tôi nhận được một hình ảnh nhỏ từ phương pháp trên. Nếu bạn cũng thấy trường hợp này, bạn cũng có thể sử dụng

<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">

và bạn sẽ có một hình ảnh trên màn hình đủ tốt để bạn chụp ảnh màn hình - ví dụ như sử dụng CmdShift4hoặc CmdShift3trên máy Mac. Đảm bảo bạn thay đổi kích thước cửa sổ Chrome của mình đến mức tối đa được phép trên màn hình.


Giải pháp thông minh!
Manu

1
Điều này thực sự tạo ra kết quả tốt nhất cho tôi vì nó hiển thị chính xác giống như trình duyệt.
Jason Haslam

hình ảnh thu được có độ phân giải rất kém đối với tôi
Michael

Khéo léo :) nhưng đối với các SVG rất lớn, độ phân giải của hình ảnh thu được quá thấp, như @Michael đã đề cập.
waldyrious

5

Nếu bạn muốn làm nhiều việc cùng một lúc, bạn có thể:

mogrify -format png *.svg

Cũng có các tùy chọn để thay đổi kích thước, v.v.


3
mogrifycũng tương đương với ImageMagick.
ShreevatsaR

Hoạt động tuyệt vời, nhưng tàn nhẫn chậm.
Meekohi

-1? Ai đó nghĩ rằng điều này không hữu ích? Lỗi gì vậy?
DefenestrationDay

2
Tôi không phải là người bị đánh giá thấp, nhưng đáng chú ý là ImageMagick đã ngu ngốc chuyển đổi Svg thành một hình ảnh raster có kích thước tùy ý trước khi thay đổi kích thước, dẫn đến đầu ra mờ.
Dae

4

Hãy thử Apache Batik .

java -jar batik-rasterizer.jar FILES

Nó cũng hỗ trợ chuyển đổi hàng loạt và có nhiều tùy chọn hữu ích khác.


4

Tôi đã thực hiện svgexport bằng cách sử dụng nút / npm cho việc này, nó là nền tảng chéo và có thể đơn giản như:

svgexport input.svg output.png

Đây là cách dễ nhất để sử dụng và ghi nhớ cho đến nay. Ngoài ra, người duy nhất tạo ra kết quả chính xác trong trường hợp của tôi.
Marko Grešak

kết quả giải quyết không tốt cho tôi.
Michael

3

Bạn cũng có thể sử dụng ph Phantomjs để kết xuất svg. Ưu điểm là nó làm cho nó giống như một trình duyệt vì về cơ bản nó là một WebKit không đầu.

Khi bạn tải xuống, bạn cần ph Phantomjs (nhị phân) và tệp rasterizer.js từ thư mục ví dụ.

phantomjs examples/rasterize.js Tiger.svg out.png

1
Để tham khảo, điều này có thể được cài đặt với brew cask install phantomjs. Trong cài đặt của tôi, thư mục ví dụ được đặt trong đường dẫn /usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/.
waldyrious

2

Đây là những gì tôi đã sử dụng:

brew install imagemagick --with-librsvg

Sau đó chạy các lệnh sau:

find . -type f -name "*.svg" -exec bash -c 'convert $0 $0.png' {} \; rename 's/svg\.png/png/' *

Hy vọng nó giúp.


1

Tôi sử dụng lệnh này trên linux của tôi. Nó sẽ làm việc cho bạn là tốt.

mogrify +antialias -density 2000 -verbose -format png *.svg

Tôi đã học được rằng nếu không có đối số "mật độ", bitmap sẽ rất pixel. Thay đổi giá trị mật độ để phù hợp với nhu cầu của bạn.


2
Ngay cả với mật độ, chuyển đổi không tạo ra hình ảnh sắc nét như hình ảnh vector. Thay vào đó hãy thử Apache Batik.
Behrang

1

Lệnh convert của ImageMagick, sử dụng một số tham số khác, là những gì đã làm cho tôi. Đây là giải pháp tập lệnh Bash bó của tôi, phân chia nhiệm vụ qua nhiều quy trình để sử dụng tất cả các lõi của bạn! Sửa đổi khi cần thiết.

batchConvertToSVG.sh (lấy số lượng tiến trình làm đối số):

end=$(( $1 - 1 ))
for i in `seq 0 $end`;
        do
            echo Spawning helper $i of $end
                ./convertToSvgHelper.sh $i $1 &
        done 

convertToSvgHelper.sh:

n=$1
for file in ./*.svg; do
   filename=${file%.svg}
   echo converting file named $filename
   test $n -eq 0 && convert -format png -resize 74 -background transparent -density 600 $file $filename.png
   n=$((n+1))
   n=$((n%$2))
done

0

Như đã nhận xét trước đây ImageMagick thực hiện thủ thuật. Tôi chỉ muốn thêm một điểm cho GraphicsMagick , một nhánh rẽ cũ của ImageMagick có một số cải tiến (và sự phụ thuộc ít hơn nhiều khi được cài đặt qua fink).


0

Bạn có thể thực hiện chuyển đổi hàng loạt trên toàn bộ thư mục tệp SVG sang PNG. Tôi đã sử dụng giao diện dòng lệnh Inkscape để tạo các tệp png với chiều rộng 80px.

find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;

png sẽ được lưu với tên gốc * .png


0

Một phương pháp khác mà không cần cài đặt bất cứ điều gì. Không phải trong dòng lệnh mặc dù.

  1. Mở tệp .svg trong Safari.
  2. Nhấn alt-lệnh-i để mở thanh tra.
  3. Nhấp chuột phải vào <svg>thẻ, chọn "Chụp ảnh màn hình". (Lưu ý rằng bạn không được phóng to hình ảnh.)

PS Để phóng to hình ảnh .svg nếu nó quá nhỏ, hãy thử mở tệp .svg trong trình soạn thảo văn bản và nối thêm 0vào mỗi số trừ thuộc tính meta. Điều này có thể được thực hiện bằng cách thay thế regex toàn cầu từ (\d+)đến $10, nơi $1giữ chỗ để tham chiếu lại, chẳng hạn.


Bạn có lẽ nên đề cập rằng điều này gần giống như  câu trả lời của 太極 者 無極 ' .
Scott

-1

wkhtmltoimage (từ dự án wkhtmltopdf) đã làm điều này chuyển đổi tốt:

wkhtmltoimage --zoom 2 foo.svg foo.png

ImageMagick làm cho nhân vật CJK trống trên máy mac của tôi.


Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
Blackwood

@Blackwood tốt, cập nhật.
georgexsh 14/12/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.