虽然这一切都有效,但是当在网页上查看时,png透明度会变为黑色.有没有办法保持透明度?
这是我从MVC控制器插入数据库的图像服务:
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通道. 总结以上是内存溢出为你收集整理的c# – 如何保持png透明度?全部内容,希望文章能够帮你解决c# – 如何保持png透明度?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)