Создайте PNG с JPG и AlphaChannel в C # - PullRequest
2 голосов
/ 09 сентября 2011

Как создать файл PNG, если у меня есть два отдельных файла JPG с изображением и альфа-каналом?

Изображение JPG + маска JPG -> PNG с прозрачностью

I 'Мы пробовали решения WPF:

image.OpacityMask = new ImageBrush ( new BitmapImage ( uriMask ) );

и System.Drawing.

Image bmpMask = Image.FromFile ( maskFilePath );
gfxNewImage.SetClip (  Graphics.FromImage (bmpMask) );

, но у меня проблемы с обоими (черный фон или полностью черный)

Любая идеяили пример?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

ОК. Предположим, у вас есть JPEG Picute и картинка в формате PNG с альфа-каналом. Вы должны сделать это, чем, и это будет работать, только если эти 2 изображения имеют одинаковый размер.

Bitmap jpegFile = new Bitmap("JpegFile.jpg");
Bitmap alphaFile = new Bitmap("Png.jpg");

for(int i=0;i<jpegFile.Width;i++)
{
   for(int j=0;j<jpegFile.Height;j++)
    {
       Color withAlpha = jpegFile.GetPixel(i,j);
           withAlpha.A = alphaFile.GetPixel(i,j).A;
       jpegFile.SetPixel(withAlpha);
    }
}
1 голос
/ 09 сентября 2011

попробуйте следующие параметры для объекта Grafics:

using (var g = Graphics.FromImage(bmpMask))
{
    g.SmoothingMode = SmoothingMode.AntiAlias;
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.DrawImage(source, 0, 0, width, height);
}
...