Image editing techniques and algorithms using Qt

来源:互联网 发布:apache io模型 编辑:程序博客网 时间:2024/05/17 03:51

费了好半天劲先翻译这一点。还有好多地方不明白。先弄明白这一点。继续以后的翻译。

这一篇文章我们将讨论不同的技术和算法来修改图像使用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;}

原创粉丝点击