2012-03-07 31 views
2

有人點我,其中解釋瞭如何使用的libpng & PNG ++用於應用雙三次調整對圖像的教程?我花了近三個小時尋找一些東西,找不到。也許是因爲我不知道去哪裏看。使用的libpng來調整(雙三次)一個圖像列表

圖像(48 bit image)與libpng一起讀取,然後讀入QImage進行輸出。如果在圖像上使用QImage::scaled,則像素信息會丟失,並且圖像對於我所需的信息沒有用處。

我讀取和操作與PNG :: rgba_pixel_16像素的圖像 - 讀取這樣的:

png::image<png::rgba_pixel_16> myImage(myFile.toAscii());

引用另一個答案:

存在每分量格式沒有16個比特而QImage。您可以獲得的最多是每個組件8位的QImage :: Format_ARGB32。即使您使用8位索引模式,顏色表格也不支持每個組件超過8位。此外,QImageIOHandler類以QImage方式工作,所以不幸的是,您不能創建自定義圖像格式插件來處理每個顏色組件的16位。

最後一個引用說明了爲什麼我不能使用QImage。

回答

0

爲什麼你需要的libpng?你可以只讀一個數組中的圖像,然後執行調整大小,你不需要libpng,讀取圖像後,它變得獨立於格式...

+0

我讀取和操作與PNG :: rgba_pixel_16像素的圖像 - 讀取這樣的:PNG ::圖像 MYIMAGE(myFile.toAscii());這給了我,我需要的質量(我認爲是64位的??,但我不知道,事情是,結果是正常的,但太大了。) – arieltools 2012-03-07 13:38:07

1

如果你只是想通過編程來調整圖像的大小,看看imagemagick

+0

謝謝,但需要使用QT這一點。 – arieltools 2012-03-07 13:38:21

+0

Qt不支持48bpp圖像。 AFAICT快速瀏覽libpng文檔後無法進行縮放。這是什麼意思,你「需要使用Qt」?使用Qt來調用imagemagick :-) – 6502 2012-03-11 06:44:34

1

你不需要使用Qt的libpng。

只需使用

QImage QImage::scaled (const QSize & size, Qt::AspectRatioMode aspectRatioMode, Qt::TransformationMode transformMode) const 

transformMode = Qt::SmoothTransformation雙線性縮放。

+0

我知道,我已經試過了,但由於某種原因,它沒有給我預期的結果。我認爲它必須有點深度。 – arieltools 2012-03-07 13:36:37

+0

究竟是什麼問題?可能有興趣爲此打開一個問題... – Koying 2012-03-07 13:54:09

+0

使用libpng讀取圖像(48位圖像),然後讀入一個'QImage'輸出。如果我在圖像上使用'QImage :: scaled',則像素信息丟失,圖像對我所需要的沒有用處。 – arieltools 2012-03-08 07:38:53

相關問題