web-dev-qa-db-ja.com

Qtで画像をトリミングするにはどうすればよいですか?

QPixmap/QImageにPNG画像をロードし、それをトリミングしたいと思います。 Qtでそれを行う関数はありますか、それ以外の場合はどうすればよいですか?

35
sashoalm

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);
42
hmuelner

QPixmapの代わりにQImageを使用します。

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

このコードは、左上隅にトリミングされたファイルを128x128pxで保存します。

28
Zienek

QPixmapを使用するので、その copy method を使用して QRect を指定し、実際のトリミングを実行できます。

4
Bart

QPixmapのcopy()関数を使用するだけです。

このテキストは、静止に関する最初のコメントを読んだ結果です。

画像を折り返す方が良い場合もあります。つまり、別の画像の一部である画像、つまり別の画像の一部を指し示す画像が必要です。これは、ラップされたイメージがヘッダーを除いて追加のメモリを必要としない方法です。ラップした画像を安心して表示・保存できます。欠点は、元の画像がラップされた画像を使用するまで有効である必要があることです。また、ラップされた画像で描画している場合は、ソースに影響します。

2
zkunov