2011-06-06 19 views
8

SVG görüntüsünü PNG veya JPEG olarak C# kullanarak program aracılığıyla dönüştürmek için şu anda hangi yöntemler var?SVG'yi PNG veya JPEG'ye dönüştürme

Bu konuyla ilgili tüm SO sorularının hepsini okudum ve bunların tümü üçüncü taraf bir programı başlatmak için harici bir işlem kullanmakla ilgilidir. Benim durumumda, bu, yakında Azure'a geçeceğimiz için bir seçenek değil.

Yapabilmem gereken şey SVG dosyasını diskten yüklemek ve ideal olarak onu manipüle etmek için System.Drawing sınıflarını kullanabileceğim bir şeye dönüştürmektir.

Herhangi bir fikrin var mı?

+0

http://imagemagick.codeplex.com/ yararlı olabilir. – MGwynne

+0

, sorunu çözdünüz mü? bizimle görüşecek miydin? – Armance

+0

Hayır, hiç yapmadım. Bu yaklaşımı terk ettik. – Scott

cevap

4

CodePlex'te SVG Rendering Engine'a bakabilirsiniz. Daha sonra convert to an image için kullanılabilecek bir bellek içi akışını (SVG'niz) alacaktır.

+2

teşekkürler, öneri kullanmaya çalışıyorum ama hata alıyorum Nesne başvurusu bir nesnenin örneğine ayarlanamaz [yardım plz] (http://stackoverflow.com/questions/8414324/convert-svg-to- image-programatic) – Armance

+0

Ayrıca Draw() yöntemini çağırdığımda "Nesne başvurusu bir nesnenin örneğine ayarlanmadı" hatasını alıyorum. –

+0

@FrankHale - Astrocybernaute bağlantısındaki çözüm sizin için işe yarıyor mu? – keyboardP

4

Eh. Uygun bir boyuta yeniden boyutlandırılan bir SVG dosyası oluşturmak için çözümümle paylaşacağım.

Ben Sen here

Sonra github paket kaynak kodunu bulabilirsiniz bu Nuget paketini

Install-Package Svg 
yüklemek, bunu yapabilirsiniz:

var svgDocument = SvgDocument.Open(path); 
using (var smallBitmap = svgDocument.Draw()) 
{ 
    var width = smallBitmap.Width; 
    var height = smallBitmap.Height; 
    if (width != 2000)// I resize my bitmap 
    { 
     width = 2000; 
     height = 2000/smallBitmap.Width*height; 
    } 

    using (var bitmap = svgDocument.Draw(width, height))//I render again 
    { 
     bitmap.Save(pngPath, ImageFormat.Png); 
    } 
} 

tadını çıkarın!

2

Tüm yapmanız gereken SVG Rendering Library nuget paketini yüklemektir.

Install-Package Svg 

Ve bu kadar sonra

 //read svg document from file system 
     var svgDocument = SvgDocument.Open("test.svg"); 
     var bitmap = svgDocument.Draw(); 
     //save converted svg to file system 
     bitmap.Save("test.png", ImageFormat.Png); 

.

+0

Bir döngüde kullanıldığında, bu ilk dosyadan sonra çöp üretir – toddmo

İlgili konular