使用 Graphics.DrawImage 时如何保持 Http 处理程序中图像的透明度?

发布于 2024-07-07 14:41:42 字数 428 浏览 4 评论 0原文

我有一系列需要即时裁剪的 GIF,我在 C# 中使用 HTTP 处理程序,这样我就可以更好地封装代码 - 为结果提供缓存等。

目前,当我将现有图像绘制到通过 Graphics 对象生成的新 Image 所有透明度都会丢失。

我尝试了各种技术来尝试保持透明度,但无济于事。

我尝试过的事情:

  • 使用 MakeTransparent (Color) 方法调用
  • ImageAttriutesColorMapSetColorKey 组合使用code>

我真的不想开始使用不安全的运算符或 Win32 调用。

有任何想法吗?

I've got a series of GIFs that I need to crop on the fly, I'm using a HTTP Handler in C# so I can better encapsulate the code - provide caching for the result etc.

Currently, when I draw the existing image to a new Image via the Graphics object all the transparency is lost.

I've tried various techniques to try and maintain the transparency, but to no avail.

Things I've tried:

  • Using the MakeTransparent (Color) method call
  • Using the ImageAttriutes with a combination of ColorMap and SetColorKey

I don't really want to start using unsafe operators or Win32 calls.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

念三年u 2024-07-14 14:41:42

当我使用透明度时,我总是使用位图。 即,

System.Drawing.Image SourceImage = System.Drawing.Image.FromFile("the.gif");
System.Drawing.Bitmap NewImage = new System.Drawing.Bitmap(SourceImage);
// Do Processing
NewImage.MakeTransparent();
// Store changes
NewImage.Save(..., System.Drawing.Imaging.ImageFormat.Png);

当然,如果您无法离开 Graphics 对象,那么这可能没有多大用处。

When I have used transparency I've always used Bitmap. I.e.

System.Drawing.Image SourceImage = System.Drawing.Image.FromFile("the.gif");
System.Drawing.Bitmap NewImage = new System.Drawing.Bitmap(SourceImage);
// Do Processing
NewImage.MakeTransparent();
// Store changes
NewImage.Save(..., System.Drawing.Imaging.ImageFormat.Png);

Of course if you cannot move away from the Graphics object then that may not be of much use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文