【发布时间】:2011-10-24 01:08:44
【问题描述】:
我在 QPixmap/QImage 中加载了一个 PNG 图像,我想裁剪它。 Qt 中有没有这样的功能,或者我应该怎么做?
【问题讨论】:
我在 QPixmap/QImage 中加载了一个 PNG 图像,我想裁剪它。 Qt 中有没有这样的功能,或者我应该怎么做?
【问题讨论】:
你可以使用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);
【讨论】:
使用 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();
由于您使用 QPixmap,您可以使用它的copy method 并为其提供QRect 来执行实际的裁剪。
【讨论】:
只需使用 QPixmap 的 copy() 函数。
本文是阅读您的问题的第一条评论的结果:
有时最好环绕图像。那就是让一个图像是另一个图像的一部分,或者换句话说,指向另一个图像的一部分。这是包装图像不需要额外内存的方式,除了它的标题。您可以毫无顾虑地显示或保存包装的图像。缺点是原始图像必须保持有效,直到您使用包装图像,而且如果您在包装图像中绘图,它会影响源。
【讨论】: