2016-03-01 3 views
1

У меня есть этот метод, который преобразует изображение. Я сделал это вот так:ImageMagick и проблемы с прозрачностью при преобразовании изображений

/// <summary> 
    /// Converts any image to png and uploads it to azure 
    /// </summary> 
    /// <param name="data">The byte array of the image</param> 
    /// <returns>The path to the azure blob</returns> 
    public async Task<string> ConvertImage(byte[] data) 
    { 

     // Create our image 
     using (var image = new MagickImage(data)) 
     { 

      //// Resize the image 
      //image.Resize(600, 600); 

      // Create a new memory stream 
      using (var memoryStream = new MemoryStream()) 
      { 

       // Set to a png 
       image.Format = MagickFormat.Png; 
       image.VirtualPixelMethod = VirtualPixelMethod.Transparent; 
       image.Write(memoryStream); 
       memoryStream.Position = 0; 

       // Create a new blob block to hold our image 
       var blockBlob = container.GetBlockBlobReference(Guid.NewGuid().ToString() + ".png"); 

       // Upload to azure 
       await blockBlob.UploadFromStreamAsync(memoryStream); 

       // Return the blobs url 
       return blockBlob.StorageUri.PrimaryUri.ToString(); 
      } 
     } 
    } 

но запустите этот бит кода, созданное изображение не прозрачно, хотя исходный файл есть. Кто-нибудь знает, почему?

ответ

1

Ваш источник SVG-файла не является прозрачным, но вы можете указать ImageMagick/Magick.NET использовать прозрачный фон. Вы должны прочитать изображение, как это:

// Create our image 
using (var image = new MagickImage()) 
{ 
    image.Settings.BackgroundColor = MagickColors.Transparent; 
    image.Read(data); 
} 
+0

Это не работает. Он просто создает прозрачное изображение :( – r3plica

+0

@ r3plica вы можете перегрузить класс MagickImage с растровым изображением. – StartCoding

Смежные вопросы