• 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;}


  • 相关阅读:
    datatables ajax异步分页
    redis实现消息发布/订阅
    使用Tomcat+Redis来实现集群部署中的Session共享问题
    工具:从一个文件夹中复制jar到另一个文件夹中
    CentOS配置上网
    热力图与百度地图扩展实例
    【转】JavaWeb编码之get方式中文乱码问题
    数字转换大写核心类
    详说 Navicat for MySQL 快捷键
    MYBATIS常用的sql事例
  • 原文地址:https://www.cnblogs.com/pangblog/p/3275751.html
Copyright © 2020-2023  润新知