私はラスターグラフィックを編集するためのアプリケーションを開発しています。このアプリケーションでは、QImageクラスのscanline関数と同じことをするscanline関数を作成する必要があります。 しかし、私は、スキャンライン機能が動作する方法とスキャンラインを一般的に混乱させることはほとんどありません。 たとえば、高さが177pxの画像に対してbytesPerLine()を呼び出すと、その値は531(各ピクセルの3バイト)になりますが、この関数は520を返します。またqimageクラスのscanline関数
、私は変数データでR = 249、G = 249、B = 249の値について uchar data = image->scanLine(y)[x]
を使用する255 は、私は本当にこの価値を理解していないです。 ありがとうございます。
私は各ピクセルがRGBAであると予想します.255はおそらくアルファチャンネルです。次の2バイトを確認してください。 –
フォローアップ、 'QImage'がどのようなフォーマットで構築されたか知っていますか?これは、与えられたピクセルのバイトとフォーマットのサイズに直接影響します。ドキュメント: > 32-bppイメージデータにアクセスする場合は、返されたポインタをQRgb *(QRgbは32ビットサイズ)にキャストし、それを使用してピクセル値を読み書きします。ピクセル形式は基本となるプラットフォームのバイト順に依存するため、uchar *ポインタは直接使用できません。 qRed()、qGreen()、qBlue()、およびqAlpha()を使用してピクセルにアクセスします。 –
@EvanTeran:QImageは、Format_RGB32形式で作成されました。私はqRgbへのポインタを返す必要があることを理解していますが、キャストせずに色にアクセスすることに興味があります。 image-> scanLine(y)[x]によって返された値から、どのカラー値にアクセスしたのか分かりません。 – Mirzet