Image editing techniques and algorithms using Qt

費了好半天勁先翻譯這一點。還有好多地方不明白。先弄明白這一點。繼續以後的翻譯。

這一篇文章我們將討論不同的技術和算法來修改圖像使用Qt.但是在這之前我們繼續你必須知道一些原則處理圖片。

這裏主要有兩種類代表一個圖片在qt, QImage 和QPixmap;我們還可以使用QBitmap來處理單色圖片。和QPicture 和QPainter繪圖命令。

當我們畫圖片在一個屏幕上時QPixmap我們建議使用。因爲他是很快速地一種方式去畫圖片,QPixmap的問題是我們不能用單個像素去讀它和修改它

QImage 是最快比QPixmap 在IO操作和給我們去訪問單個像素信息。這個類,我們將在本文中編輯圖片。

如果你管理大圖片,喜歡用相機拍照。建議使用更精簡的圖來展示在屏幕上。除非我們想讓用戶來變焦這個圖片。這有兩種方式來導處圖片從一個文件和縮小它。

導入一張圖片用QImage 或者QPixmap 和調整後;

 

QImage image("sample.png");
image
= image.scaled(width, height);---這裏的widthheight你可以換成縮放後的數值。

使用QImageReader 設置目標尺寸之後導入圖片進一Qimage.QImageReader不能加載一個QPximap但是很容易創建一個QPximap從一個來自己QIage用一個靜態的方法。

QPximap::fromImage(QImage img).這個方法是最快的和你不需要內存必須加載完整

大小圖片。

QImageReader imgReader("sample.png");
imgReader.setScaledSize(QSize(width, height));
QImage * image;
imgReader.read(image);
 

每一個圖像是由像素,每個像素是由3個顏色通道:紅、綠、藍、和一個alpha通道,包含透明度值(JPG和其他圖像格式不支持透明)。這些渠道有0到255之間的值和黑色顏色形成當這些3顏色通道0而白色是代表當的值是2553通道。來表示一種顏色在本文中,我們將把它作爲RGB(紅、綠、藍)被紅色、綠色和藍色的價值3通道。

QImage * MainWindow::greyScale(QImage * origin){
    QImage * newImage =new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
 
    QRgb * line;
 
    for(int y =0; y<newImage->height(); y++){
        QRgb * line =(QRgb *)origin->scanLine(y);
 
        for(int x =0; x<newImage->width(); x++){
            int average =(qRed(line[x])+ qGreen(line[x])+ qRed(line[x]))/3;
            newImage->setPixel(x,y, qRgb(average, average, average));
        }
 
    }
 
    return newImage;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章