Mac OS X'te SVG'yi PNG'ye dönüştürmek için komut satırı uygulaması


167

Mac OS X'te çalışan SVG'yi PNG'ye dönüştürebilen herhangi bir komut satırı programı var mı?

Düzenleme : Dylan B ImageMagick ile iyi bir cevap vardı. Başvuru için, ImageMagick'i MacPorts kullanarak Mac OS X'te SVG destekli yüklemek için

port install imagemagick +rsvg

2
Ben Google Chrome'u varsa bir yol ... ve diğer şeyler yüklemek gerek bulundu: superuser.com/questions/134679/...
nopole

cairosvg.org python3 için çalışıyor ve hiçbir sorunu yok gibi görünüyor. pip3 install cairosvg
JayRizzo

Yanıtlar:


234

Veya hiçbir şey yüklemeden:

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

1000 piksel genişliğinde picture.svg.png dosyasını üretecektir.

Sadece OS X 10.6.3'te test ettim.


38
Ne yazık ki bu görüntüleri bir kareye kırpıyor.
Martijn Pieters,

7
Ah, qlmanage -tQuick Look tarafından kullanılan küçük resmi (Finder'da, vb.) Verir. Zekice fikir. Maalesef, bu küçük resimler, özellikle de söz konusu olan metinler olduğunda rahatsız edici olabilir.
ShreevatsaR

7
Bu, 1. kadranda svg dosyası ile görüntüler üretir. Otomatik kırpma yapmaz. Dosyaları isim projesinden dönüştürmeye çalışıyorum - keşke bu işe yatsaydı.
Alex Cook,

7
Bu çözüm şeffaflığı dikkate almıyor. rsvg-convert@ Ahti'nin cevabındaki araç benden önce işe yaradı.
BenR,

3
Bu -sseçenek benim için işe yaramadı hem genişlik ve yükseklik parametreleri koyarak . Hala onu bir kareye ekiyor. Çok sinir bozucu!
Erik van der Neut

107

Benim için iş için en iyi araç olduğunu buldum rsvg-convert.

Ile demlemek bulunabilir brew install librsvgve bu gibi kullanılır:

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

(Bu örnek 32px yüksekliğinde bir png oluşturur. Genişlik otomatik olarak belirlenir.


Bu benim için Mavericks ve commons.wikimedia.org/wiki/… '
Aron Ahmadia

Aslında bu işe yaradı, ImageMagick converthatalar verdi ve karmaşık bir
Brice

7
Bu, OS X Yosemite +1 için bulduğum en iyi çözüm.
Greg Martin,

Bu, bazı SVG'lerim için garip bir şekilde başarısız oldu. qlmanageCevap hepsi için çalıştı ama ben istemiyorum bir beyaz arka plan, koydu.
sudo

1
İle rsvg-convert, ortaya çıkan .png doğru boyutlara vardı, ama görüntü yerine orijinal renkleri siyah çıktı. İle qlmanagegörüntüye bir kare şekilde kırpılır. Yine de bir çözüm arayışı :-(
Erik van der Neut

43

ImageMagick bir olduğu son derece o vardı Photoshop eğer muhtemelen rakibi sen bilemez yönlü komut satırı resim düzenleyici, bir GUI. Ama yine de bunlara ihtiyacı olan var. : P

Aşağıdaki gibi bir şey kurulumdan sonra bir .svg dosyasını .png'ye çevirir:

$ convert picture.svg picture.png

Orijinal .svg silinmedi.


Bir tür GUI var display.
Ignacio Vazquez-Abrams

1
ImageMagick'i Fink ile kurduğumda svg'yi png'ye çeviremedim - bazı hatalar vardı. Benim de librsvg2-bin'i kurmam gerektiği ortaya çıktı.
tst

Librsvg2-bin kurulu değilse (OS X'teki gibi) bu başarısız olur. OS X'e yüklenmenin bir yolu bulunamadı
John Sheehan

3
Bu, SVG'yi bulanık görüntüler oluştururken yeniden boyutlandırmak istediğinizde işe yaramaz.
Behrang

3
Tüm SVG dosyalarını da doğru şekilde dönüştürmez; en azından qlmanage görüntünün tüm kısımlarını ele geçirdi.
Johan

28

Komut Satırı ile Inkscape , benim için en iyi sonuçları veriyor:

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

İşin iyi yanı, elde edilen görüntünün tam piksel boyutunu, yoğunlukla karıştırmadan belirtebilirsiniz.


bu benim için çalışıyor! - Inkscape ile daha büyük bir SVG hazırladım
matheszabi

Bu benim el yazısı svg'yi doğru yapan tek yöntem
Griffin,

Convert, SVG'den iyi PNG dosyaları oluşturmaz. Inkscape'i kullanmak şu ana kadar bulduğum en iyi yol.
ol_v_er

Bu benim için çalışır, ancak son derece bulanık dosyalar oluşturur.
Marcin

3
Dosyaları bulmakta bir sorunum vardı. Bu yüzden çalıştırmakinkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
Andrei

16

Tamam, Google Chrome'unuz varsa bunu Mac'te yapmanın basit bir yolunu buldum.

Bir cümlede, svgresmi bir web sayfasında görmek (bir htmldosyada olmalı ), resme sağ tıklayın ve "Resmi Kopyala" seçeneğini seçin ve Önizleme uygulamasına yapıştırın.

Adımlar:

  1. svgDosyayı sabit diskinizde indirin veya bulundurun ,somefile.svg
  2. Şimdi, aynı klasörde, sadece tmp.htmlbu satırı içeren bir html dosyası hazırlayın :<img src="somefile.svg">
  3. Şimdi, bu html dosyasını Google Chrome'da açın
  4. Resmi görmelisin. Şimdi resmin üzerine sağ tıklayın ve "Resmi Kopyala" yı seçin
  5. Mac'in Önizleme Uygulamasına gidin ve "File -> New from Clipboard"
  6. Şimdi File -> Savedosya ve sizde pngdosya var. (veya diğer dosya türleri).

Bu, Mac OS X El Capitan'daki geçerli Chrome'da (sürüm 48.0) test edilmiştir.

Güncelleme : Google Chrome tarafından getirilen bazı kısıtlamalar nedeniyle olup olmadığından emin değilim. Chrome 58.0'ı kullanarak sadece bir SVG dosyasını deniyorum ve yukarıdaki yöntemden küçük bir görüntü alıyorum. Bu davayı da görürseniz, kullanabilirsiniz.

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

ve örneğin bir Mac kullanarak CmdShift4ya CmdShift3da Mac kullanarak ekran görüntüsü almanız için ekranda yeterince iyi bir görüntü olacak . Chrome pencerenizi ekranda izin verilen maksimum değere getirdiğinizden emin olun.


Akıllı çözüm!
Manu

1
Bu aslında benim için en iyi sonuçları veriyor, çünkü tarayıcı ile aynı şekilde işleniyor.
Jason Haslam,

Ortaya çıkan görüntü benim için çok düşük çözünürlük oldu
Michael

Ustaca :) ama çok büyük SVG'ler için, ortaya çıkan görüntünün çözünürlüğü çok düşük, @Michael'in dediği gibi.
Waldyrious

5

Aynı anda birçok şey yapmak istiyorsanız, şunları yapabilirsiniz:

mogrify -format png *.svg

Vb anında vb yeniden boyutlandırmak için seçenekler var ..


3
mogrifyAynı zamanda ImageMagick’in par.
ShreevatsaR

Harika çalışıyor, ama vahşice yavaş.
Meekohi

-1? Birisi bunun yararlı olmadığını mı düşünüyor? Hata nedir?
DefenestrationDay

2
Oyu düşüren ben değilim, ama kayda değer, ImageMagick'in aptalca svg'yi yeniden boyutlandırmadan önce rasgele bir boyuta raster bir resme dönüştürdüğünü ve bulanık çıktı verdiğini belirtti.
Dae

4

Apache Batik'i deneyin .

java -jar batik-rasterizer.jar FILES

Ayrıca toplu dönüştürme özelliğini destekler ve birçok başka yararlı seçeneğe sahiptir.


4

Bunun için düğüm / npm kullanarak svgexport yaptım, platformlar arası ve bu kadar basit olabilir:

svgexport input.svg output.png

Bu, bugüne kadar kullanması ve hatırlaması en kolay olandı. Ayrıca benim durumumda doğru sonuç veren tek kişi.
Marko Grešak

Ortaya çıkan karar benim için iyi değildi.
Michael

3

Svg'yi oluşturmak için fantomları da kullanabilirsiniz . Bunun avantajı, temelde başsız bir WebKit olduğu için tarayıcı gibi yapmasıdır.

Bir kere indirdikten sonra phantomjs (binary) ve rasterizer.js dosyasına örnekler klasöründen ihtiyacınız olacak.

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

1
Başvuru için, bu ile kurulabilir brew cask install phantomjs. Yüklememde, örnekler klasörü yoldaydı /usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/.
waldyrious

2

Bu benim kullandığım şeydi:

brew install imagemagick --with-librsvg

Ardından aşağıdaki komutları çalıştırın:

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

Umarım yardımcı olur.


1

Linux'ta bu komutu kullanıyorum. Senin için de işe yaramalı.

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

"Yoğunluk" argümanı olmadan bitmap'in pikselleştirileceğini öğrendim. İhtiyacınıza göre-yoğunluk değerini değiştirin.


2
Yoğunlukta bile dönüşüm, vektör görüntüsü kadar keskin bir görüntü oluşturmaz. Bunun yerine Apache Batik'i deneyin.
Behrang

1

ImageMagick'in convert komutu, başka parametreler kullanarak, benim için yaptı. İşte tüm çekirdeklerinizi kullanmak için görevi birden çok işlem arasında bölen toplu Bash komut dosyası çözümüm! Gerektiği gibi değiştirin.

batchConvertToSVG.sh (bağımsız değişken olarak işlem sayısını alır):

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

Daha önce yorumlandığı gibi ImageMagick hile yapar. Sadece ImageMagick’in eski bir çatalı olan GraphicsMagick’e bir nokta eklemek istedim .


0

SVG dosyalarının tümünde PNG'ye toplu dönüştürme gerçekleştirebilirsiniz. 80px genişliğinde png dosyalarını üretmek için Inkscape komut satırı arayüzünü kullandım.

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

png orjinal ismi ile kaydedilecektir * .png


0

Hiçbir şey yüklemeden yine başka bir yöntem. Yine de komut satırında değil.

  1. .Svg dosyasını Safari'de açın.
  2. Müfettişi açmak için alt-command-i düğmesine basın.
  3. <svg>Etikete sağ tıklayın, "Ekran Yakalama" seçeneğini seçin. (Görüntüyü yakınlaştırmamanız gerektiğine dikkat edin.)

PS .svg görüntüsünü çok küçükse büyütmek için, .svg dosyasını metin düzenleyicide açmayı deneyin 0ve meta-niteliği dışındaki her sayıya ekleyin . Bu bir genel normal ifade ikame yapılabilir (\d+)için $10burada, $1örneğin, arka referans tutucudur.


Muhtemelen bunun neredeyse 太極 者 無極 而 生 'ın cevabı ile aynı olduğunu  söylemelisiniz .
Scott

-1

wkhtmltoimage ( wkhtmltopdf projesinden) bunu iyi dönüştürdü:

wkhtmltoimage --zoom 2 foo.svg foo.png

ImageMagick Mac’imdeki CJK karakterini boş kılar.


Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak daha iyidir. Bağlantılı sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir. - Şu kaynaktan
Blackwood

@ Blackwood iyi, güncellendi.
georgexsh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.