【问题标题】:How can I crop an image in Qt?如何在 Qt 中裁剪图像?
【发布时间】:2011-10-24 01:08:44
【问题描述】:

我在 QPixmap/QImage 中加载了一个 PNG 图像,我想裁剪它。 Qt 中有没有这样的功能,或者我应该怎么做?

【问题讨论】:

    标签: image qt crop


    【解决方案1】:

    你可以使用QPixmap::copy:

    QRect rect(10, 20, 30, 40);
    QPixmap original('image.png');
    QPixmap cropped = original.copy(rect);
    

    还有QImage::copy

    QRect rect(10, 20, 30, 40);
    QImage original('image.png');
    QImage cropped = original.copy(rect);
    

    【讨论】:

      【解决方案2】:

      使用 QImage 代替 QPixmap:

          QImage image("initial_image.jpg");
          QImage copy ;
          copy = image.copy( 0, 0, 128, 128); 
          copy.save("cropped_image.jpg");
      

      此代码将保存一个裁剪到左上角 128x128 像素的文件。

      【讨论】:

      • 你可以使用QPixmap做同样的操作;此外,QPixmap 具有 toImage(),如果您从 QPixmap 开始并希望它作为 QImage。您可以在一行中这样做:QImage copy = pixmap.copy(0,0,128,128).toImage();
      【解决方案3】:

      由于您使用 QPixmap,您可以使用它的copy method 并为其提供QRect 来执行实际的裁剪。

      【讨论】:

        【解决方案4】:

        只需使用 QPixmap 的 copy() 函数。

        本文是阅读您的问题的第一条评论的结果:

        有时最好环绕图像。那就是让一个图像是另一个图像的一部分,或者换句话说,指向另一个图像的一部分。这是包装图像不需要额外内存的方式,除了它的标题。您可以毫无顾虑地显示或保存包装的图像。缺点是原始图像必须保持有效,直到您使用包装图像,而且如果您在包装图像中绘图,它会影响源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-02-02
          • 2012-11-16
          • 2021-07-24
          • 2021-06-24
          • 2020-08-14
          • 2012-02-02
          • 2011-09-21
          相关资源
          最近更新 更多