QT的图像类有QImage,QPixmap,QBitmap,QPicture。
CMyWidget类头文件:
#ifndef CMYWIDGET_H
#define CMYWIDGET_H
#include <QPainter.h>#include <QImage>
class CMyWidget : public QWidget
{
// Q_OBJECT
public:
CMyWidget(QWidget *parent = 0);
void paintEvent(QPaintEvent *e);
private:
QImage *image;
QImage *iGray;
int w,h;
};
#endif // CMYWIDGET_H
CMyWidget类源文件:#include "CMyWidget.h"
CMyWidget::CMyWidget(QWidget *parent) : QWidget(parent)
{
image = new QImage("zzcc.jpg");
w = image->width();
h = image->height();
iGray = new QImage(w, h, QImage::Format_ARGB32);
resize(640,480);
}
void CMyWidget::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
for(int i=0; i<w; i++)
for(int j=0; j<h; j++)
{
QRgb pixel = image->pixel(i,j);
//int gray = qGray(pixel);
//QRgb grayPixel = qRgb(gray, gray, gray);
int Red = qRed(pixel);
int Green = qGreen(pixel);
int Blue = qBlue(pixel);
QRgb rgbPix = qRgb(Red,Green,Blue);
//iGray->setPixel(i, j, grayPixel);
iGray->setPixel(i,j,rgbPix);
}
QFile file("zzccRGB");
file.open(QFile::WriteOnly);
file.write((const char*)(iGray->bits()),(qint64)(iGray->numBytes()));
file.close();
painter.begin(this);
painter.drawImage(0,0,*image);
painter.drawImage(320,0,*iGray);
painter.end();
}
main.cpp主文件:#include <QtGui/QtGui>
#include <QApplication>
#include <QPainter.h>
#include "CMyWidget.h"
int main (int argc,char **argv)
{
QApplication app(argc,argv);
CMyWidget *win = new CMyWidget();win->show();
return app.exec();
}
http://zzcc19870623.blog.163.com/blog/static/15938520201171952931828/