我在QPixmap/QImage中加载了一张PNG图片并想要裁剪它。在Qt中是否有相应的函数可以完成这个操作,或者我应该采用其他方法来实现?
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);
使用QImage而不是QPixmap:
QImage image("initial_image.jpg");
QImage copy ;
copy = image.copy( 0, 0, 128, 128);
copy.save("cropped_image.jpg");
这段代码将保存一个裁剪到左上角的128x128像素的文件。
只需使用QPixmap的copy()函数即可。
这段文字是阅读您问题上的第一条评论得出的结果:
有时候最好将图像包装起来。也就是说,将一个图像作为另一个图像的一部分或者说指向另一个图像的某一部分。这样,包装后的图像不需要额外的内存,除了它的头文件。您可以放心地显示或保存包装后的图像。缺点是原始图像必须保持有效,直到您使用包装后的图像,而且如果您在包装后的图像中进行绘制,它会影响源图像。
QPixmap
来执行相同的操作;此外,如果你从QPixmap
开始并希望将其作为QImage
,则QPixmap
具有toImage()
。你可以在一行中这样做:QImage copy = pixmap.copy(0,0,128,128).toImage();
- kayleeFrye_onDeck