Tag: 颜色深度

C# – 如何将图像转换为8位彩色图像?

我需要将从文件加载的PNG图像转换为另一个设备(嵌入式编程)使用的每像素8位字节数组。 我正在逐个像素地复制到使用16位颜色创建的新图像 – Format16bppRgb565 ,但我需要Format8bpp ,这在.NET Framework中不存在。 (我不能使用Format8bppIndexed因为其他设备无法处理索引位图) Bitmap img = new Bitmap(imgPath); Bitmap img8 = new Bitmap(imgW, imgH, PixelFormat.Format16bppRgb565); for (int I = 0; I <= img.Width – 1; I++) { for (int J = 0; J <= img.Height – 1; J++) { img8.SetPixel(I, J, img.GetPixel(I, J)); } } 那么如何将Image转换为每像素8位字节数组呢? 我可以使用8位索引格式并提取字节吗? – Format8bppIndexed 我可以通过将32位颜色的R,G,B值减少到8位来计算像素颜色吗? […]

减少图像中的颜色深度并不会减小文件大小?

我使用此代码来减少图像的深度: public void ApplyDecreaseColourDepth(int offset) { int A, R, G, B; Color pixelColor; for (int y = 0; y < bitmapImage.Height; y++) { for (int x = 0; x < bitmapImage.Width; x++) { pixelColor = bitmapImage.GetPixel(x, y); A = pixelColor.A; R = ((pixelColor.R + (offset / 2)) – ((pixelColor.R + (offset / 2)) % offset) […]

Kinect深度和图像帧对齐

我正在玩新的Kinect SDK v1.0.3.190。 (stackoverflow中的其他相关问题是以前的kinect sdk)我从Kinect获得深度和颜色流。 由于使用不同的传感器捕获深度和RGB流,因此在两个帧之间存在未对准,如下所示。 只有RGB 只有深度 深度和RGB 我需要对齐它们,并且有一个名为MapDepthToColorImagePoint的函数正是为此目的。 但它似乎没有用。 这是一个同样混合(深度和映射的颜色)结果,下面是使用以下代码创建的 Parallel.For(0, this.depthFrameData.Length, i => { int depthVal = this.depthFrameData[i] >> 3; ColorImagePoint point = this.kinectSensor.MapDepthToColorImagePoint(DepthImageFormat.Resolution640x480Fps30, i / 640, i % 640, (short)depthVal, ColorImageFormat.RgbResolution640x480Fps30); int baseIndex = Math.Max(0, Math.Min(this.videoBitmapData.Length – 4, (point.Y * 640 + point.X) * 4)); this.mappedBitmapData[baseIndex] = (byte)((this.videoBitmapData[baseIndex])); this.mappedBitmapData[baseIndex + 1] […]

如何检查位图的颜色深度?

我正在开发一个打印图像文件夹的应用程序,包括JPEG和TIFF。 TIFF图像通常为黑白(1bpp)。 加载图像后,我想确定图像是彩色还是黑白或灰度,这样我就可以将图像发送到正确的打印机(彩色打印机或黑白打印机)。 我正在使用Bitmap构造函数image = new Bitmap(filename); 加载图像。 编辑:检查像素深度的答案非常适合B&W。 有关检查图像是否为灰度而不迭代每个像素的任何想法?