QT圖片有彩到灰
QT圖片有彩到灰這是本文的內容,
QT的圖像類有QImage,QPixmap,QBitmap,QPicture。
不過QPixmap和QBitmap是用來優(yōu)化圖像顯示的,QPicture貌似可以記錄QPixmap的操作記錄,這個還沒仔細看
QImage可以處理每個像素,這正是我所需要的查看幫助文檔,發(fā)現QImage貌似沒有直接讀取為灰度圖的(難道是我沒發(fā)現?)于是采用最傻的方法:把RGB值設為相同的值,貌似很浪費空間的樣子,思路就是讀取每個像素的RGB值,再由此算出灰度值。
最大眾化的計算公式是Gray = 0.3*R + 0.59*G + 0.11*B
QT中提供的方法有 int qGray ( QRgb rgb )
其計算公式是 Gray = (R * 11 + G * 16 + B * 5)/32
- void Picture::paintEvent(QPaintEvent*){
- QImage image;
- image = QImage("airplane.jpg").scaled(200,200);
- int w,h;
- w = image.width();
- h = image.height();
- QImage iGray(w,h,QImage::Format_RGB32);
- for(int i=0; i<200; i++){
- for(int j=0;j<200; j++){
- QRgb pixel = image.pixel(i,j);
- int gray = qGray(pixel);
- QRgb grayPixel = qRgb(gray,gray,gray);
- iGray.setPixel(i,j,grayPixel);
- }
- }
- QPainter painter(this);
- painter.drawImage(0,0,image);
- painter.drawImage(200,0,iGray);
- }
運行結果:
小結:QT圖片有彩到灰介紹到這,通過以上的內容,還有效果圖的實現,是不是感覺這個效果其實也挺好實現的呢?
【編輯推薦】