需要在内存中绘制一个16位灰度位图。将TCanvas与位图相关联将是非常棒的。我使用的是Delphi,但是任何语言都可以。我只需要这个点子。
有什么想法吗?
不能将灰度转换为RGB,因为在转换过程中会丢失一半的分辨率(像素深度)。
发布于 2011-07-22 03:48:31
你可以尝试像ImageFX这样的图像库,或者对于开源的图像库,试试Graphics32,或者VampyreImagingLIbrary,根据它的Docs here,它支持一些操作,比如在加载到缓冲区中的图像上绘制线条和矩形。我期望扫描仪(图像处理)库比非图像库更好地支持灰度图像,但我不期望扫描仪图像处理库是基于内存的。
如果你不介意使用一些有点旧的东西,并且有点绑定到Microsoft Windows上,你可以考虑使用DirectDraw风格(现在合并到DirectX中)来做缓冲区管理(保存16位数据)和让你在上面绘图。我不知道它对16位灰度图像有任何特殊的支持。
有趣的是,WPF本身就支持16位灰度。如果你能了解他们是如何做到这一点的,你就可以模仿Delphi中的技术。该链接还讨论了使用OpenGL来实现16位亮度,但问题中并没有建议OpenGL允许这样做。我发现人们试图将OpenGL用于在delphi (16位灰度)图像显示中编写的医疗应用程序,但没有提到修改内存中的图像。
发布于 2014-09-11 14:52:39
你可以使用Gdi+,它不会在16位灰度上工作,但它可以在48位RGB图像上工作。
因此,我们可以通过复制所有三个channels.performs中相同的16位来将16位数据转换为48位RGB数据,然后再次将48位转换回16位
https://stackoverflow.com/questions/6780464
复制相似问题