将用Magick ++加载的1位图像转换为HBITMAP

时间:2019-06-04 23:08:57

标签: c++ winapi imagemagick magick++

我想知道是否有可能将我用Magick ++(Magick::Image image; image.read(path);)加载的1位图像转换为深度等于1的HBITMAP(类似于通过调用{{1}获得的图像) }。

CreateBitmap(width, height, 1, depth, data);这样的幼稚尝试当然是行不通的-ImageMagick数据显然以不同的方式存储。我可以使用CreateBitmap(width, height, 1, depth, image.getConstPixels(0, 0, width, height));容器(不是完整代码)正确复制该数据:

BITMAP

当目标位图是32位图像时有效。但是,假设目标图像是1位。 ImageMagick中是否有一个函数可以让我以易于转换为1位的方式提取数据?我找不到类似于bitmap.bmWidth = image->image()->columns; bitmap.bmHeight = image->image()->rows; bitmap.bmWidthBytes = 4 * bitmap.bmWidth; bitmap.bmPlanes = 1; bitmap.bmBitsPixel = 32; ... for (y = 0; y < (ssize_t)image->image()->rows; y++) { p = GetVirtualPixels(image->image(), 0, y, image->image()->columns, 1, exception); if (!p) break; for (x = 0; x < (ssize_t)image->image()->columns; x++) { q->rgbRed = ScaleQuantumToChar(GetPixelRed(image->image(), p)); q->rgbGreen = ScaleQuantumToChar(GetPixelGreen(image->image(), p)); q->rgbBlue = ScaleQuantumToChar(GetPixelBlue(image->image(), p)); q->rgbReserved = 0; p += GetPixelChannels(image->image()); q++; } } 的另一个函数。 ImageMagick支持吗?

0 个答案:

没有答案