2014-02-13 3 views
0

Я использую библиотеки Windows GDI для изменения размера изображения с помощью следующего кода. Я пытаюсь создать прозрачные изображения. Эта функция вызывается из и функции, которая генерирует изображения. Если я сохранить изображение без изменения размера я получаю прозрачностьGDI Transparent Background C#

static Image FixedSize(Image imgPhoto, int Width, int Height) 
    { 
     int sourceWidth = imgPhoto.Width; 
     int sourceHeight = imgPhoto.Height; 
     int sourceX = 0; 
     int sourceY = 0; 
     int destX = 0; 
     int destY = 0; 

     float nPercent = 0; 
     float nPercentW = 0; 
     float nPercentH = 0; 

     nPercentW = ((float)Width/(float)sourceWidth); 
     nPercentH = ((float)Height/(float)sourceHeight); 
     if(nPercentH < nPercentW) 
     { 
      nPercent = nPercentH; 
      destX = System.Convert.ToInt16((Width - 
          (sourceWidth * nPercent))/2); 
     } 
     else 
     { 
      nPercent = nPercentW; 
      destY = System.Convert.ToInt16((Height - 
          (sourceHeight * nPercent))/2); 
     } 

     int destWidth = (int)(sourceWidth * nPercent); 
     int destHeight = (int)(sourceHeight * nPercent); 

     Bitmap bmPhoto = new Bitmap(Width, Height, 
          PixelFormat.Format24bppRgb); 
     bmPhoto.SetResolution(imgPhoto.HorizontalResolution, 
         imgPhoto.VerticalResolution); 

     Graphics grPhoto = Graphics.FromImage(bmPhoto); 
     grPhoto.Clear(Color.Transparent); 
     grPhoto.InterpolationMode = 
       InterpolationMode.HighQualityBicubic; 

     grPhoto.DrawImage(imgPhoto, 
      new Rectangle(destX,destY,destWidth,destHeight), 
      new Rectangle(sourceX,sourceY,sourceWidth,sourceHeight), 
      GraphicsUnit.Pixel); 

     grPhoto.Dispose(); 
fileName= txtImgName.text(); 
     bitmap.Save(Server.MapPath("~/images32/") + fileName, ImageFormat.Png); 
    } 

Я получаю изображение изменяет размер, но проблема в том, что она оказывает на черном фоне. Пожалуйста, помогите мне в создании прозрачного изображения

Заранее спасибо

ответ

0

Я думаю, что это потому, что вы используете растровое изображение с RGB цветов (Format24bppRgb) в качестве источника.

Используйте один, который содержит альфа-канал, например Format32bppArgb.