2013-05-10 101 views
-4

我目前正在使用一个函数来检查图像是否具有一定的尺寸,如果是,我将它转换为jpeg(例如:如果它是一个大的png,则转换为jpeg )。检查图像是否透明

我想知道是否有一个C#函数,允许您检查透明度。如果图像是透明的,那么保持透明并且不要转换。

任何帮助正确的方向将是伟大的。谢谢!

+2

请出示一些源代码...你尝试过什么?什么不工作? – Yahia 2013-05-10 20:23:56

+2

这里还有另一个相同的问题的答案 - > http://stackoverflow.com/questions/2569538/detecting-if-a-png-image-file-is-a-transparent-image - 虽然它不是很快.. 。 – Darren 2013-05-10 20:25:31

+1

使用[ImageResizer](http://imageresizing.net/)。我最近开始使用它,我再也不会再写一个缩放器/裁剪器的功能了(仍然在逐步淘汰我的旧功能)。这很棒。 – MikeSmithDev 2013-05-10 20:37:46

回答

1

我没有测试过,但也许这个片段将工作:

System.Drawing.Image myImage; //Set source from image here 
System.Drawing.Bitmap myBitmap = new System.Drawing.Bitmap(myImage); 

for (xPixel = 0; xPixel <= (myBitmap.Width - 1); xPixel++) { 
    for (yPixel = 0; yPixel <= (myBitmap.Height - 1); yPixel++) { 
     if (myBitmap.GetPixel(xPixel, yPixel) == Drawing.Color.Transparent) { 
      // Image contains transparency 
     } 
    } 
} 
+0

感谢您的回复。我将在周一开始工作时尝试J. Hudler和Mike Smith的建议。我还检查了提供的链接。 谢谢大家的回答,我会“投票”一次,我可以测试一切! – jamez14 2013-05-12 19:25:43

+0

这太慢了! – bitbonk 2014-01-24 16:12:10

+0

它也不会检测到部分透明度。您必须检查颜色的alpha分量以查看它是否小于255.还有一些初步检查可以在单个命令中执行,以查看图像是否具有Alpha通道。 – Nyerguds 2016-08-18 08:46:51