Problemer med transparens og skalering
Jeg har en HttpHandler, der kan skalere et billede - meget simpelt i bund og grund. Mit problem ligger i, at hvis jeg kalder denne med en png-fil med transparens i, så får jeg ikke transparens, men derimod sort farve.Jeg har set det mange stedet på nettet forskellige steder, men hvordan får jeg det lige fixet?
Jeg tror det er i den del her det går galt:
using (Graphics canvas = Graphics.FromImage(newImage))
{
canvas.SmoothingMode = SmoothingMode.AntiAlias;
canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
canvas.PixelOffsetMode = PixelOffsetMode.HighQuality;
canvas.CompositingQuality = CompositingQuality.HighQuality;
canvas.CompositingMode = CompositingMode.SourceOver;
canvas.DrawImage(oldImage, new Rectangle(new Point(0, 0), newSize));
using (System.Drawing.Imaging.ImageAttributes scalingAtt = new System.Drawing.Imaging.ImageAttributes())
{
scalingAtt.SetWrapMode(WrapMode.TileFlipXY);
canvas.DrawImage(oldImage, new Rectangle(0, 0, newSize.Width, newSize.Height), 0, 0, oldImage.Width, oldImage.Height, GraphicsUnit.Pixel, scalingAtt);
}
if (drawBorder)
{
// Draw border Rectangle
//Pen solidPen = new Pen(Color.Black);
Pen transPen = new Pen(Color.FromArgb(alpha, 0, 0, 0), 1);
canvas.DrawRectangle(transPen, 0, 0, (width - 1), (height - 1));
}
string ext = Tools.FileUtility.GetExtension(fileName);
switch (ext.ToLower())
{
case ".jpg":
newImage.Save(cachedFileName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case ".png":
newImage.Save(cachedFileName, System.Drawing.Imaging.ImageFormat.Png);
break;
case ".gif":
newImage.Save(cachedFileName, System.Drawing.Imaging.ImageFormat.Gif);
break;
default:
newImage.Save(cachedFileName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
}
}
Jeg tror det er en simpel simpel ting, der går galt, men det her GDI noget er ikke lige min kop te :)