我试图将c ++代码转换为c#。
此代码正在压缩位图图像。我的c ++代码使用BITMAPINFOHEADER
要读取位图图像的biBitCount,如何在c#(win app)中获取图像的位数?
这是c ++代码
char *pTemp; //image data will store here
BITMAPINFOHEADER *pbminfo;
pbminfo = (BITMAPINFOHEADER *)pTemp;
if ( pbminfo->biBitCount != 1 ) // Convert 24 bit -> 1 bit
{
//some process will be done here
}
答案 0 :(得分:0)
你确实可以在Visual C ++ / CLI中编写一个包装类,但是你想要做的一切都是完全可行的,只需使用C#就可以了。
您可以使用图片的PixelFormat
属性。它有各种各样的possible values。
像素格式定义与一个数据像素相关联的存储器的位数。格式还定义了单个数据像素中颜色分量的顺序。
PixelFormat48bppRGB,PixelFormat64bppARGB和PixelFormat64bppPARGB每个颜色分量(通道)使用16位。 GDI +版本1.0和1.1可以读取每通道16位的图像,但是这样的图像被转换为每通道8位格式以进行处理,显示和保存。每个16位颜色通道可以保存0到2 ^ 13范围内的值。
某些像素格式包含预乘颜色值。预乘意味着颜色值已经乘以alpha值。
var image = new Bitmap(@"C:\temp\me.png");
if (image != null) {
Console.Write("Format: {0}", image.PixelFormat.ToString("G"));
}
我的结果将是:Format32bppArgb
。
答案 1 :(得分:0)
您可以尝试以下操作:
using System.Drawing;
public class TestThis
{
public void Test()
{
Image myImage = Image.FromFile("Myfile.png");
int bitDepth = Image.GetPixelFormatSize(myImage.PixelFormat);
if( bitDepth != 1)
{
// Do domething
}
}
}