需要绘制一个16位灰度内存位图。将TCanvas
与位图关联起来会非常棒。我使用Delphi,但任何语言都可以。我只是需要这个想法。在内存中绘制一个16位灰度位图
任何想法?
将灰度转换为RGB不是一种选择,因为在此过程中会丢失一半的分辨率(像素深度)。
需要绘制一个16位灰度内存位图。将TCanvas
与位图关联起来会非常棒。我使用Delphi,但任何语言都可以。我只是需要这个想法。在内存中绘制一个16位灰度位图
任何想法?
将灰度转换为RGB不是一种选择,因为在此过程中会丢失一半的分辨率(像素深度)。
你可以尝试的成像库等ImageFX,或用于一个开放源代码之一,尝试Graphics32,或者VampyreImagingLIbrary,根据其文档here它支持像画线和矩形比装入缓冲器的图像的一些操作。我希望扫描仪(图像处理)库比非图像库更好地支持灰度图像,但我不认为扫描仪图像处理库是基于内存的。但是如果你想直接在可见的缓冲区(你提到TCanvas)做这项工作,并且你愿意只限于Delphi XE和Windows 7,你可以使用Direct2D上下文,它支持16个和32位深度,但作为一个32位色彩深度仍然只会是一个灰度图像的8位深度,我认为所有正常的非灰度图形库将失去一些关于你的信息。
如果您不介意使用有点旧的东西,并且与Microsoft Windows有点关系,您可以使用DirectDraw样式(现在合并到DirectX)进行调查,以进行缓冲区管理(保存16位数据)和让你吸取它,以及。我不知道它对16位灰度图像有什么特别的支持。
有趣的是,WPF原生支持16位灰度。如果你能发现他们是如何做到的,你可以在Delphi中使用这种技术。该链接还讨论了使用OpenGL做16位亮度,但OpenGL允许的问题没有任何建议。我发现人们试图使用OpenGL来编写用delphi(16位灰度)图像显示的医疗应用程序,但没有提及修改内存中的图像。
..如果您不介意查看非delphi的东西,请查看Python Imaging Library(PIL)。它绝对可以做到这一点,本地读取/写入16位灰度TIFF等。它在科学/医学成像中使用很多。 –
Grphics32(顾名思义)不支持16位灰度图像。 – iamjoosy
?? TCanvas并不意味着任何“视觉”味道。 –
你可以使用Gdi + 它不能在16位灰度上工作,但它在48位RGB图像上工作。
,所以我们可以通过复制相同的16位在所有三个channels.performs一些绘图转换16位数据,48位RGB数据,然后再转换48位回到16位
我想根本的问题是:GDI是否支持16位灰度图像? Canvas只是GDI的一个包装。 – CodesInChaos
GDI不支持每像素16位AFIK –
绘制什么?一个可以用纯色绘制很多东西的polyfiller只是几行代码,但是如果你想使用内插纹理填充antialiased TTF文本,情况就不同了...... – 6502