2013年11月27日 星期三

【QT】QImage 操作方式

Exported from Notepad++
圖像格式: QImage::Format_RGB32 //儲存格式為B,G,R,A 對應0,1,2,3 QImage::Format_RGB888 //儲存格式為R,G,B 對應0,1,2 QImage::Format_Indexed8 構造圖像: (1)、QImage myImage1 = QImage(filename); (2)、QImage myImage2 = QImage(width, height, QImage::Format_…); 操作圖像: uchar* bits(); //取得影像第一個指標位置 int byteCount(); //取得影像占用位置數量 int bytesPerLine(); //取得影像每一行的占用位置數量 uchar* scanLine(int); //取得每行的指標位置 操作方式(1) int i, j; int lineNum_32 = 0; int format = 3; int perLine = image.bytesPerLine(); uchar *bits = image.bits(); for(j = 0; j < image.height(); j++) { lineNum_32 = j * perLine; for(i = 0; i < image.width(); i++) { int b_32 = bits[ lineNum_32 + i * format + 2]; int g_32 = bits[ lineNum_32 + i * format + 1]; int r_32 = bits[ lineNum_32 + i * format + 0]; } } 操作方式(2) int i, j; int format = 3; uchar *imagebits_32; for(j = 0; j < image.height(); j++) { imagebits_32 = image32.scanLine(j); for(i = 0; i < image.width(); i++) { int b_32 = imagebits_32[ i * format + 2]; int g_32 = imagebits_32[ i * format + 1]; int r_32 = imagebits_32[ i * format + 0]; } }

2 則留言:

  1. 受益良多,真的感謝你!

    回覆刪除
  2. 對了,您文章中的 " int format = 3; ",這句是不是應該是4才對?
    Format_RGB32 應該間隔4個uchar

    請問是否是筆誤呢?

    回覆刪除