gpt4 book ai didi

c# - 如何保持png透明度?

转载 作者:太空狗 更新时间:2023-10-29 21:23:58 26 4
gpt4 key购买 nike

我创建了一个函数,允许将上传的透明 .png 文件插入到 SQL Server 数据库中,并通过 HttpHandler 显示在网页上。

虽然这一切都有效,但当在网页上查看时,png 透明度会变为黑色。有没有办法保持透明度?

这是我从 MVC Controller 插入数据库的图像服务:

public void AddImage(int productId, string caption, byte[] bytesOriginal)
{
string jpgpattern = ".jpg|.JPG";
string pngpattern = ".png|.PNG";
string pattern = jpgpattern;

ImageFormat imgFormat = ImageFormat.Jpeg;

if (caption.ToLower().EndsWith(".png"))
{
imgFormat = ImageFormat.Png;
pattern = pngpattern;
}

ProductImage productImage = new ProductImage();
productImage.ProductId = productId;
productImage.BytesOriginal = bytesOriginal;
productImage.BytesFull = Helpers.ResizeImageFile(bytesOriginal, 600, imgFormat);
productImage.BytesPoster = Helpers.ResizeImageFile(bytesOriginal, 198, imgFormat);
productImage.BytesThumb = Helpers.ResizeImageFile(bytesOriginal, 100, imgFormat);
productImage.Caption = Common.RegexReplace(caption, pattern, "");

productImageDao.Insert(productImage);
}

这里是“ResizeImageFile”辅助函数:

public static byte[] ResizeImageFile(byte[] imageFile, int targetSize, ImageFormat imageFormat)
{
using (System.Drawing.Image oldImage = System.Drawing.Image.FromStream(new MemoryStream(imageFile)))
{
Size newSize = CalculateDimensions(oldImage.Size, targetSize);
using (Bitmap newImage = new Bitmap(newSize.Width, newSize.Height, PixelFormat.Format24bppRgb))
{
using (Graphics canvas = Graphics.FromImage(newImage))
{
canvas.SmoothingMode = SmoothingMode.AntiAlias;
canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
canvas.PixelOffsetMode = PixelOffsetMode.HighQuality;
canvas.DrawImage(oldImage, new Rectangle(new Point(0, 0), newSize));
MemoryStream m = new MemoryStream();
newImage.Save(m, imageFormat);
return m.GetBuffer();
}
}
}
}

我需要做什么来保持 png 透明度?请举例说明。我真的不是图像处理专家。

谢谢。

最佳答案

也许可以尝试将像素格式从 PixelFormat.Format24bppRgb 更改为 PixelFormat.Format32bppRgb。您需要额外的 8 位来保存 alpha channel 。

关于c# - 如何保持png透明度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com