C#Graphics.DrawImage()透明png背景

时间:2016-01-27 10:56:00

标签: c# linux image draw imaging

我正在System.Drawing.Graphics类的帮助下使用C#开发图像编辑器应用程序。该应用程序也必须能够在Windows和Linux上运行。

场景很简单,我有一个背景图片(jpeg,24bpp,渐进式),我必须在其上绘制透明的png图像。我正在使用以下模式(使用其他坐标和更多图像):

Bitmap backgroundJpg = new Bitmap("bg.jpg");
Bitmap transparentPng = new Bitmap("transp.png");

using (var g = Graphics.FromImage(backgroundJpg))
{
    g.DrawImage(transparentPng, new Point(0, 0));
}

backgroundJpg.Save("test.jpg");

Windows 上,此过程的结果正常 在 Linux 上,看起来png图像没有被正确处理,看起来它们在被Graphics实例绘制时并不“透明”。 (编辑:我已经检查过,它们是透明的,但不像在Windows上那样。)

编辑:如果它在Windows和Linux上运行,我也对替代解决方案感兴趣。

编辑2:只有当透明图像背后有时,透明度才会显示为。如果在空白的Format32bppArgb图像上绘制,则表示没问题。

其他信息:

也许我缺少一些配置选项来强制它在绘图过程中保持透明,或者Linux本身有一些配置。

Linux配置: (如果有帮助)
带有
的BeagleBone Black设备 - Debian GNU / Linux 7.9(wheezy) - 单声道:
- JIT编译器:4.0.5
- 建筑:armel,vfp + hard
- GC:sgen

任何帮助将不胜感激,并随时询问是否需要任何其他细节。谢谢!

注意:在下面的图像中,红色“X”是黑色背景的一部分,蓝色图像是透明的png。

Windows 8.1结果:
Windows 8.1 result

Linux Debian结果:
Linux Debian result

0 个答案:

没有答案