如何在Qt中裁剪图像?

43

我在QPixmap/QImage中加载了一张PNG图片并想要裁剪它。在Qt中是否有相应的函数可以完成这个操作,或者我应该采用其他方法来实现?

4个回答

56
你可以使用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);

29

使用QImage而不是QPixmap:

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

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


你可以使用 QPixmap 来执行相同的操作;此外,如果你从 QPixmap 开始并希望将其作为 QImage,则 QPixmap 具有 toImage()。你可以在一行中这样做:QImage copy = pixmap.copy(0,0,128,128).toImage(); - kayleeFrye_onDeck

4

由于您使用QPixmap,因此可以使用其复制方法并提供一个QRect来执行实际的裁剪。


2

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

这段文字是阅读您问题上的第一条评论得出的结果:

有时候最好将图像包装起来。也就是说,将一个图像作为另一个图像的一部分或者说指向另一个图像的某一部分。这样,包装后的图像不需要额外的内存,除了它的头文件。您可以放心地显示或保存包装后的图像。缺点是原始图像必须保持有效,直到您使用包装后的图像,而且如果您在包装后的图像中进行绘制,它会影响源图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接