업로드 된 투명 .png 파일을 SQL Server 데이터베이스에 삽입하고 HttpHandler를 통해 웹 페이지에 표시하는 기능을 만들었습니다.PNG 투명도를 유지하는 방법은 무엇입니까?
이 모든 것이 작동하는 동안 웹 페이지에서 볼 때 png 투명도가 검은 색으로 변경됩니다. 투명성을 유지할 수있는 방법이 있습니까?
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();
}
}
}
}
다음은 MVC 컨트롤러에서 데이터베이스에 삽입 내 이미지 서비스입니다 PNG 투명도? 예를 보여주십시오. 나는 심각하게 이미지 조작 전문가는 아니야.
감사합니다.
'Format32bppArgb'를 사용하여 알파 ('A')를 유지하십시오. –
질문 제목 앞에 "C#"또는 이와 유사한 접두어를 붙이지 마십시오. 이것이 바로 태그가있는 것입니다. –
원본 .png이 8 비트인지 또는 풀 컬러인지 알고 있습니까? –