QImage

QImage

QImage クラスは画像を扱うペイントデバイスです。

メソッド

コンストラクター

QImage::QImage()
空の QImage オブジェクトを生成します。
  1. //空のQImageオブジェクト
  2. QImage image1;
  3.  

QImage::QImage(const QSize & size, Format format)
サイズ QSize 及びフォーマット format を指定して、QImage オブジェクトを生成します。
メモリの割り当てに失敗した場合、空の QImage オブジェクトを生成します。

QImage::QImage(int width, int height, Format format)
幅(ピクセル単位) width、高さ(ピクセル単位) height 及びフォーマット format を指定して、QImage オブジェクトを生成します。
メモリの割り当てに失敗した場合、空の QImage オブジェクトを生成します。
  1. //100*200 RGBAフォーマット
  2. QImage image2(QSize(100, 200), QImage::Format_RGBA8888);
  3. QImage image3(100, 200, QImage::Format_RGBA8888);
  4.  

QImage::QImage(uchar * data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
幅(ピクセル単位) width、高さ(ピクセル単位) height、フォーマット format を指定して、QImage オブジェクトを生成します。
既に存在するメモリバッファー data を使用します。
  1. //Blue=255 Green=0 Red=0 Alpha=255 4px*8px
  2. uchar databuffer[] =
  3. {
  4. 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
  5. 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
  6. 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
  7. 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
  8. 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
  9. 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
  10. 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
  11. 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
  12. };
  13. //4px*8px RGBAフォーマット databufferは非const
  14. QImage image4(databuffer, 4, 8, QImage::Format_RGBA8888);
  15.  
data 及び data の各スキャンラインは32bitにアラインメントされている必要があります。
要するにuchar型は1バイトなので data の要素数が4で割り切れる数でなければならないということです。
  1. //4バイトなのでOK
  2. uchar databuffer[] =
  3. {
  4. 204, 204, 204, 204,
  5. };
  6. //7バイトなのでNG
  7. uchar databuffer[] =
  8. {
  9. 204, 204, 204, 204, 204, 204, 204,
  10. };
  11.  
画像フォーマットがインデックスカラー形式の場合、QImage オブジェクトのカラーテーブルは空なので、使用する前に setColorCount() または setColorTable() で設定する必要があります。
メモリバッファー data は QImage オブジェクト及び修正が加えられてない QImage オブジェクトからのすべてのコピーの寿命が終わるまで削除してはいけません。修正が加えられた場合はオリジナルバッファーから切り離されます。
  1. QImage image(databuffer,4,8,QImage::Format_ARGB32);
  2. delete databuffer; //QImageオブジェクトで参照しているので削除してはダメ
  3.  
QImage オブジェクトが破棄された際にメモリバッファー data は削除されません。
手動で破棄するには関数ポインタ cleanupFunction 及び cleanupInfo を設定することができます。
cleanupFunction 関数は最後のコピーが破棄された際に呼び出されます。
  1. QImage image(databuffer,4,8,QImage::Format_ARGB32,myImageCleanupHandler,&CleanupInfo());
  2. //--------------------------------
  3. //cleanupFunctionの定義
  4. void myImageCleanupHandler(void* info)
  5. {
  6. qDebug() << ((CleanupInfo*)info)->str();
  7. }
  8. //cleanupInfoの定義
  9. struct CleanupInfo
  10. {
  11. QString str()
  12. {
  13. return QString("myImageCleanupHandler is called");
  14. }
  15. };
  16.  
参考リンク

QImage::QImage(const uchar * data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
非constのメモリバッファーを取るコンストラクタと違い、メモリバッファーの内容を変更することができません。
例えば QImage::bits() を呼ぶとコンストラクターに与えられたメモリバッファーではなく、画像のディープコピーを返します。

QImage::QImage(uchar * data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
bytesPerLine で一行あたりのバイト数(ストライド)を指定します。

参考リンク

QImage::QImage(const uchar * data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
非constのメモリバッファーを取るコンストラクタと違い、メモリバッファーの内容を変更することができません。
例えば QImage::bits() を呼ぶとコンストラクターに与えられたメモリバッファーではなく、画像のディープコピーを返します。

QImage::QImage(const char * const[] xpm)
保留

QImage::QImage(const QString & fileName, const char * format = 0)
ファイルパス fileName からファイルを読み込み、QImage オブジェクトを生成します。
ローダーは指定したフォーマット format を使用して画像の読み込みを試みます。
フォーマットが指定されていない場合(デフォルト)、ローダーはファイルのヘッダーから画像フォーマットの推測を試みます。
読み込みが失敗した場合、空の QImage オブジェクトを生成します。
ファイル名はディスク上にある実際のファイルまたはアプリケーションに埋め込まれたリソースを指定できます。
  1. //"C:\\qt.png"から読み込む
  2. QImage image("C:\\qt.png");
  3.  

コピーコンストラクター

QImage::QImage(const QImage & image)

ムーブコンストラクター

QImage::QImage(QImage && other)

デストラクター

QImage::~QImage()

画像の大きさ

QRect QImage::rect() const
画像を囲む長方形 QRect(0, 0, width(), height()) を返します。

int QImage::height() const
画像の高さを返します。

int QImage::width() const
画像の幅を返します。

QSize QImage::size() const
画像の大きさ QSize(width(), height()) を返します。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. qDebug() << "width:" << image.width();
  3. qDebug() << "height:" << image.height();
  4. qDebug() << "size:" << image.size().width() << "*" << image.size().height();
  5. qDebug() << "rect: (" << image.rect().x() << "," << image.rect().y() << ")" << image.rect().width() << "*" << image.rect().height();
  6.  
結果
  1. width: 172
  2. height: 205
  3. size: 172 * 205
  4. rect: ( 0 , 0 ) 172 * 205
  5.  

フォーマットを取得する

Format QImage::format() const
画像のフォーマットを取得します。

bool QImage::hasAlphaChannel() const
画像がアルファチャンネルを持つ場合はtrue、そうでない場合はfalseを返します。

bool QImage::allGray() const
画像のすべての色がグレースケールの場合はtrue、そうでない場合はfalseを返します。
グレースケールであるとは、画像の赤、緑及び青のコンポーネントの値がすべて等しい場合です。
カラーテーブルがない場合、この関数は時間がかかります。

bool QImage::isGrayscale() const
32bpp画像の場合、allGray()と同じになります
8bpp画像の場合、すべてのカラーテーブルのインデックスにおいて color(i) が GRgb(i, i, i) に等しい場合はtrue、そうでない場合はfalseを返します。

サンプルコード
  1. QImage image("C:\\qt.png");
  2. qDebug() << "format:" << (int)image.format();
  3. qDebug() << "hasAlphaChannel:" << image.hasAlphaChannel();
  4. qDebug() << "allGray:" << image.allGray();
  5. qDebug() << "isGrayscale:" << image.isGrayscale();
  6. qDebug() << "isNull:" << image.isNull();
  7.  
結果
  1. format: 5 //QImage::Format_ARGB32
  2. hasAlphaChannel: true
  3. allGray: false
  4. isGrayscale: false
  5.  

QImageオブジェクトの状態

bool QImage::isNull() const
空の QImage オブジェクトの場合はtrue、そうでない場合はfalseを返します。

qint64 QImage::cacheKey() const
QImage オブジェクトのコンテンツを識別する番号を返します
異なる QImage オブジェクトは同じ内容を参照する場合にのみ、同じキーを持ちます。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. qDebug() << "isNull:" << image.isNull();
  3. qDebug() << "cacheKey:" << image.cacheKey();
  4.  
結果
  1. isNull: false
  2. cacheKey: 21474836482
  3.  

バイト数

int QImage::byteCount() const
画像のバイト数を返します。

int QImage::bytesPerLine() const
画像のスキャンライン中に含まれるバイト数を返します。
この値は byteCount() / height() に等しくなります。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. qDebug() << "byteCount:" << image.byteCount();
  3. qDebug() << "bytesPerLine:" << image.bytesPerLine();
  4. qDebug() << "byteCount() / height():" << image.byteCount() / image.height();
  5. qDebug() << "image.width() * image.height() * 32 / 8:" << image.width() * image.height() * 32 / 8;
  6.  
結果
  1. byteCount: 141040
  2. bytesPerLine: 688
  3. byteCount() / height(): 688
  4. image.width() * image.height() * 32 / 8: 141040
  5.  

ビットプレーン数、ビット深度

int QImage::bitPlaneCount() const
画像のビットプレーン数を返します。
ビットプレーン数は各ピクセルの色や透過度の情報のビット数です。
使用しないビットを含む画像フォーマットでは、ビット深度とは同じ値になりません。

int QImage::depth() const
画像のビット深度を取得します。
画像のビット深度は一つのピクセルに保存するのに使用できるビット数(bit per pixel)です。
サポートされたビット深度は1、8、16、及び32です。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. qDebug() << "bitPlaneCount:" << image.bitPlaneCount();
  3. qDebug() << "depth:" << image.depth();
  4.  
結果
  1. bitPlaneCount: 32
  2. depth: 32
  3.  

dpm、デバイスピクセル比を取得・設定する

int QImage::dotsPerMeterX() const
水平方向1mあたりに収まるピクセル数(dpm)を返します。

int QImage::dotsPerMeterY() const
垂直方向1mあたりに収まるピクセル数(dpm)を返します。

void QImage::setDotsPerMeterX(int x)
水平方向1mあたりに収まるピクセル数(dpm)を設定します。

void QImage::setDotsPerMeterY(int y)
垂直方向1mあたりに収まるピクセル数(dpm)を設定します。

qreal QImage::devicePixelRatio() const
画像のデバイスピクセル比を返します。
通常のディスプレイ環境では1ですが、Retinaディスプレイでは2になります。

void QImage::setDevicePixelRatio(qreal scaleFactor)
画像のデバイスピクセル比を設定します。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. qDebug() << "dpm: x=" << image.dotsPerMeterX() << "y=" << image.dotsPerMeterY();
  3. qDebug() << "dpi: x=" << image.dotsPerMeterX() * 0.0254 << "y=" << image.dotsPerMeterY() * 0.0254;
  4. qDebug() << "device pixel ratio:" << image.devicePixelRatio();
  5.  
結果
  1. dpm: x= 3780 y= 3780
  2. dpi: x= 96.012 y= 96.012
  3. device pixel ratio: 1
  4.  

オフセット(不明)

QPoint QImage::offset() const

void QImage::setOffset(const QPoint & offset)

カラーテーブルを取得・設定する

int QImage::colorCount() const
カラーテーブルの要素数を取得します。
カラーテーブルを使用しない画像フォーマットでは、0を返します。

void QImage::setColorCount(int colorCount)
カラーテーブルの要素数を変更します。インデックスは0~255の範囲でなければならないことに注意してください。
カラーテーブルを拡張した場合、新たに増えた要素にはqRgba(0, 0, 0, 0)が設定されます。

QVector<QRgb> QImage::colorTable() const
カラーテーブルに含まれている色のリストを返します。
カラーテーブルを使用しない画像フォーマットでは、空の QVector<QRgb> を返します。

void QImage::setColorTable(const QVector<QRgb> colors)
カラーインデックスをQRgb値に翻訳するのに使用されるカラーテーブルを設定します。
カラーテーブルはピクセルで使用されるすべてのインデックスを網羅している必要があり、そうでない場合の結果は未定義です。

QRgb QImage::color(int i) const
カラーテーブルのインデックス i にある色を返します。
カラーテーブルの最初の値はインデックス0です。

void QImage::setColor(int index, QRgb colorValue)
カラーテーブルのインデックス index の色を colorValue に設定します。インデックスは0~255の範囲でなければならないことに注意してください。
指定したインデックスの値が現在のカラーテーブルの要素外の場合、setColorCount() でカラーテーブルを拡張します。

サンプルコード
  1. //インデックス画像作成
  2. uchar databuffer[50*50];
  3. for(int row = 0; row < 50; row++){
  4. for(int col = 0; col < 50; col++){
  5. databuffer[row*50+col] = row;
  6. }
  7. }
  8. QImage image(databuffer,50,50,QImage::Format_Indexed8);
  9. //カラーテーブル設定
  10. for(int i = 0; i < 50; i++){
  11. image.setColor(i, 0xff000000 + i);
  12. }
  13. //カラーテーブル表示
  14. qDebug() << "colorCount:" << image.colorCount();
  15. qDebug() << "colorTable:";
  16. QVector<QRgb> color_table = image.colorTable();
  17. for(int i = 0; i < color_table.size(); i++){
  18. qDebug() << color_table[i];
  19. }
  20.  
結果
  1. colorCount: 50
  2. colorTable:
  3. 4278190080 //0xff000000
  4. 4278190081 //0xff000001
  5. 4278190082
  6. 4278190083
  7. 4278190084
  8. 4278190085
  9. 4278190086
  10. 4278190087
  11. 4278190088
  12. 4278190089
  13. 4278190090
  14. 4278190091
  15. 4278190092
  16. 4278190093
  17. 4278190094
  18. 4278190095
  19. 4278190096
  20. 4278190097
  21. 4278190098
  22. 4278190099
  23. 4278190100
  24. 4278190101
  25. 4278190102
  26. 4278190103
  27. 4278190104
  28. 4278190105
  29. 4278190106
  30. 4278190107
  31. 4278190108
  32. 4278190109
  33. 4278190110
  34. 4278190111
  35. 4278190112
  36. 4278190113
  37. 4278190114
  38. 4278190115
  39. 4278190116
  40. 4278190117
  41. 4278190118
  42. 4278190119
  43. 4278190120
  44. 4278190121
  45. 4278190122
  46. 4278190123
  47. 4278190124
  48. 4278190125
  49. 4278190126
  50. 4278190127
  51. 4278190128
  52. 4278190129
  53.  

画像のデータソースを取得する

uchar * QImage::bits()
const uchar * QImage::bits() const
const uchar * QImage::constBits() const
最初のピクセルデータのポインタを返します。
この値はscanLine(0)と等しくなります。

uchar * QImage::scanLine(int i)
const uchar * QImage::scanLine(int i) const
const uchar * QImage::constScanLine(int i) const
スキャンラインのインデックス i の最初のピクセルデータのポインタを返します。
スキャンラインの最初のインデックスは0です。
スキャンラインのデータは32bitでアラインメントされています。

フォーマット変換

QImage QImage::convertToFormat(Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const
指定されたフォーマットで画像のコピーを生成します。
画像変換フラグ flags は画像データを変換処理でどのように扱うかを決定します

QImage QImage::convertToFormat(Format format, const QVector<QRgb> & colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const
カラーテーブル colorTable を使用して、指定されたフォーマットで画像のコピーを生成します。

サンプルコード
  1. QImage image("C:\\qt.png");
  2. QImage converted = image.convertToFormat(QImage::Format_Mono);
  3.  
QImage QImage::copy(const QRect & rectangle = QRect()) const
画像の一部を切り出し、新しい QImage オブジェクトを返します。
元の画像の位置(rectangle.x(), rectangle.y())から、長方形の大きさ分切り出されます。
切り出した際、元の画像の大きさを越える領域のピクセルは0に設定されます。
画像フォーマット 0の意味
32bitのRGB画像 黒を意味
32bitのARGB画像 透明な黒
8bit画像 インデックス0
1bit画像 Qt::color0
長方形 rectangle が空の QRect オブジェクトの場合、空の QImage オブジェクトを返します。

QImage QImage::copy(int x, int y, int width, int height) const
元の画像の位置(x、 y)からコピーされ、幅 width 及び高さ height の大きさ分切り出されます。
切り出した際、元の画像の大きさを越える領域のピクセルは0に設定されます。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. //位置(50, 50)から100*100をトリミング
  3. QImage cut1 = image.copy(QRect(50,50,100,100));
  4. //位置(50, 50)から300*300をトリミング
  5. QImage cut2 = image.copy(QRect(50,50,300,300));
  6.  

マスクを生成する

QImage QImage::createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const
画像のアルファバッファを取得し、新しい QImage オブジェクトで返します。
画像フォーマットがQImage::Format_RGB32の場合、空の QImage オブジェクトを返します。
フラグ flag でQt::ImageConversionFlagsのビットフラグを設定することにより、変換処理をコントロールできます。
flagsに0を渡すとデフォルト設定になります。
返された QImage オブジェクトはリトルエンディアンオーダー(QImage::Format_MonoLSB)です。
convertToFormat() 関数を使用してビッグエンディアンオーダー(QImage::Format_Mono)に変換できます。
  1. QImage image("C:\\qt.png");
  2. QImage alpha = image.alphaChannel();
  3.  
QImage QImage::createHeuristicMask(bool clipTight = true) const
画像のヒューリスティックマスクを取得し、新しい QImage オブジェクトで返します。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. QImage heuristic = image.createHeuristicMask();
  3.  
QImage QImage::createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const
色 color の値でマスクを生成し、新しい QImage オブジェクトで返します。
モード mode が Qt::MaskInColor(デフォルト値) の場合、指定した色にマッチするすべてのピクセルを不透明なピクセルにします。
モード mode が Qt::MaskOutColor の場合、指定した色にマッチするすべてのピクセルを透明なピクセルにします。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. QImage mask1 = image.createMaskFromColor(0xFFFFFFFF, Qt::MaskInColor);
  3. QImage mask2 = image.createMaskFromColor(0xFFFFFFFF, Qt::MaskOutColor);
  4.  

ピクセルの色を取得・設定する

QRgb QImage::pixel(const QPoint & position) const
位置 position にあるピクセルの色を返します。
位置が有効でない場合、結果は未定義です。

QRgb QImage::pixel(int x, int y) const
位置 (x, y)にあるピクセルの色を返します。
位置が有効でない場合、結果は未定義です。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. qDebug() << "(50, 50)" << QString::number(image.pixel(QPoint(50, 50)),16).toUpper();
  3. qDebug() << "(30, 30)" << QString::number(image.pixel(30, 30),16).toUpper();
  4.  
結果
  1. (50, 50) "FF20782C"
  2. (30, 30) "FF7CC040"
  3.  

void QImage::setPixel(const QPoint & position, uint index_or_rgb)
位置 position にあるピクセルに色 index_or_rgb を設定します。
モノクロ画像または8bpp Indexed画像の場合は、index_or_rgb にはインデックスを設定します。
そうでない場合は、QRgb値を設定します。
位置が有効でない場合または画像がモノクロ画像や8bpp Indexed画像であり index_or_rgb >= colorCount() である場合、結果は未定義です。

void QImage::setPixel(int x, int y, uint index_or_rgb)
位置(x, y)にあるピクセルの色を設定します。
モノクロ画像または8bppIndexed画像の場合は、index_or_rgb にはインデックスを設定します。
そうでない場合は、QRgb値を設定します。
位置が有効でない場合または画像がモノクロ画像や8bpp Indexed画像であり index_or_rgb >= colorCount() である場合、結果は未定義です。

int QImage::pixelIndex(const QPoint & position) const
位置 position にあるピクセルの色のインデックスを取得します。
位置が有効でない場合または画像が8bpp Indexed画像でない場合、結果は未定義です。

int QImage::pixelIndex(int x, int y) const
位置(x, y)にあるピクセルの色のインデックスを取得します。
位置が有効でない場合または画像が8bpp Indexed画像でない場合、結果は未定義です。

ピクセル操作

void QImage::invertPixels(InvertMode mode = InvertRgb)
画像のすべてのピクセルを反転させます。
モード mode は画像のビット深度が32の場合のみ意味を持ちます。
モードが QImage::InvertRgb の場合(デフォルト設定)、アルファチャンネルは反転しないままにします。
モードが QImage::InvertRgba の場合、アルファチャンネルも反転させます。
8bpp Indexed画像を反転させると、あるピクセルがインデックス i の色を使用する場合、インデックス(255-i)の色を使用するように変換します。1bpp画像でも同様です。カラーテーブル自体は変更されません。
サンプルコード
  1. QImage image("C:\\qt.png");
  2. QImage invert1("C:\\qt.png");
  3. QImage invert2("C:\\qt.png");
  4. invert1.invertPixels(QImage::InvertRgb);
  5. invert2.invertPixels(QImage::InvertRgba);
  6.  

void QImage::fill(uint pixelValue)

void QImage::fill(Qt::GlobalColor color)
色 color ですべてのピクセルを埋めます。

void QImage::fill(const QColor & color)
色 color ですべてのピクセルを埋めます。

サンプルコード

  1. QImage image(100, 100, QImage::Format_ARGB32);
  2. image.fill(Qt::darkRed);
  3. image.fill(QColor(255,0,0));
  4.  

画像を反転させる

QImage QImage::mirrored(bool horizontal = false, bool vertical = true) const
画像を反転させ、新しい QImage オブジェクトで返します。
vertical = true を設定すると水平方向が反転します。
horizontal = false を設定すると垂直方向が反転します。

画像を読み込む

QImage QImage::fromData(const uchar * data, int size, const char * format = 0) [static]
QImage QImage::fromData(const QByteArray & data, const char * format = 0) [static]
メモリバッファー data の先頭から size バイト分より QImage オブジェクトを生成し、返します。
ローダーは指定した画像フォーマット(PNGなど) format を使用して画像を読み込みを試みます。
画像フォーマットが指定されていない場合(デフォルト)、ローダーはファイルのヘッダーから画像フォーマットの推測を試みます。
読み込みが失敗した場合、空の QImage オブジェクトを返します。

bool QImage::load(const QString & fileName, const char * format = 0)
bool QImage::load(QIODevice * device, const char * format)
ファイルパス fileName のファイルから画像を読み込みます。
ローダーは指定した画像フォーマット(PNGなど) format を使用して画像を読み込みを試みます。
画像フォーマットが指定されていない場合(デフォルト)、ローダーはファイルのヘッダーから画像フォーマットの推測を試みます。
成功した場合はtrue、そうでない場合は画像を無効にし、falseを返します。

bool QImage::loadFromData(const uchar * data, int len, const char * format = 0)
bool QImage::loadFromData(const QByteArray & data, const char * format = 0)
メモリバッファー data の先頭から size バイト分を画像として読み込みます。
ローダーは指定した画像フォーマット(PNGなど) format を使用して画像を読み込みを試みます。
画像フォーマットが指定されていない場合(デフォルト)、ローダーはファイルのヘッダーから画像フォーマットの推測を試みます。
成功した場合はtrue、そうでない場合は画像を無効にし、falseを返します。

画像を保存する

bool QImage::save(const QString & fileName, const char * format = 0, int quality = -1) const
bool QImage::save(QIODevice * device, const char * format = 0, int quality = -1) const

画像フォーマット format 及び品質因子 q を使用して、画像をファイル fileName に保存します。
画像フォーマットが指定されていない場合、ファイル名の拡張子から画像フォーマットの推測を試みます。
品質因子は0~100または-1の値でなければなりません。0は圧縮されたファイルを表し、100は圧縮されていないファイルを表します。
  • 1(デフォルト値)はデフォルト設定を使用します。
成功した場合はtrue、そうでない場合は画像を無効にし、falseを返します。

画像を縮小拡大する

QImage QImage::scaled(const QSize & size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
aspectRatioMode 及び transformMode に従い、大きさ size で定義された長方形に画像をリサイズし、新しい QImage オブジェクトを返します。
aspectRatioMode = Qt::IgnoreAspectRatio では大きさ size で定義された長方形に画像をリサイズします。
aspectRatioMode = Qt::KeepAspectRatio ではアスペクト比を保存した状態で、大きさ size で定義された長方形に収まる最も大きい長方形に画像をリサイズします。
aspectRatioMode = Qt::KeepAspectRatioByExpanding ではアスペクト比を保存した状態で、大きさ size で定義された長方形を覆う最も大きい長方形に画像をリサイズします。
size が空の QSize オブジェクトの場合は、空の QImage オブジェクトを返します。

QImage QImage::scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
aspectRatioMode 及び transformMode に従い、幅 width 高さ height で定義された長方形に画像をリサイズし、新しい QImage オブジェクトを返します。

QImage QImage::scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const
transformMode に従い、高さ height に画像をリサイズし、新しい QImage オブジェクトを返します。
この関数は横幅を自動的に計算するため、アスペクト比は保存されます。
height の値が0または負の値の場合、空の QImage オブジェクトを返します。

QImage QImage::scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const
transformMode に従い、高さ width に画像をリサイズし、新しい QImage オブジェクトを返します。
この関数は横幅を自動的に計算するため、アスペクト比は保存されます。
height の値が0または負の値の場合、空の QImage オブジェクトを返します。

位置が有効かどうか調べる

bool QImage::valid(const QPoint & pos) const
位置 pos が画像内の有効な座標の場合はtrue、そうでない場合はfalseを返します。

bool QImage::valid(int x, int y) const
位置 (x, y) が画像内の有効な座標の場合はtrue、そうでない場合はfalseを返します。

RGB画像をBGR画像に変換する

QImage QImage::rgbSwapped() const
すべてのピクセルの青と赤の要素を入れ替え、
RGB画像をBGR画像に変換するのに利用できます。

画像の埋め込むテキストを取得・設定する

QString QImage::text(const QString & key = QString()) const
キー key に関連付けられたテキストを返します。
key が空の値の場合、キーとテキストのペアを改行で区切りすべて返します。

void QImage::setText(const QString & key, const QString & text)
テキスト text を画像のテキストに設定し、キー key と関連付けます。
画像にテキストを一つしか設定しない場合は、key には空の文字列または"Description"などの一般的な値を設定できます。
画像のテキストは save() または QImageWriter::write() を呼び出して保存した際、画像データに埋め込まれます。

QStringList QImage::textKeys() const
画像のテキストのキーリストを返します。

オブジェクトの中身を交換

void QImage::swap(QImage & other)
本QImage オブジェクトと QImage オブジェクト other を入れ替えます。

変換行列を使用して画像を変換する

QImage QImage::transformed(const QMatrix & matrix, Qt::TransformationMode mode = Qt::FastTransformation) const
変換行列 matrix 及び変換モード mode に従って画像を変換し、新しいQImageオブジェクトで返します。

QImage QImage::transformed(const QTransform & matrix, Qt::TransformationMode mode = Qt::FastTransformation) const
変換行列 matrix 及び変換モード mode に従って画像を変換し、新しいQImageオブジェクトで返します。

QMatrix QImage::trueMatrix(const QMatrix & matrix, int width, int height) [static]

QTransform QImage::trueMatrix(const QTransform & matrix, int width, int height) [static]

演算子オーバーロード

QImage::operator QVariant() const

bool QImage::operator!=(const QImage & image) const

QImage & QImage::operator=(const QImage & image)

QImage & QImage::operator=(QImage && other)

bool QImage::operator==(const QImage & image) const

その他

typedef QImageCleanupFunction void myImageCleanupHandler(void *info)

QDataStream & operator<<(QDataStream & stream, const QImage & image)

|QDataStream & operator>>(QDataStream & stream, QImage & image)


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2014年08月25日 21:43