需要繪製一個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