1

この場合は 16 ビットのグレースケール イメージであるデータ セットへのポインターを含む構造体があります。このデータを表示できるように NSImage に変換し、.TIF ファイルとして保存したいと考えています。マニュアルからのルートは次のようになります。

(Create *myNSImData from frame->image, which is a pointer)
NSImage *TestImage = [[NSImage alloc] initWithData : myNSImData];
(display TestImage, save it, whatever else)
[TestImage release];

NSData オブジェクトを作成し、16 ビット データの配列が含まれていることを確認する方法がわかりません。ポインターを再キャストしようとすると、警告が表示され、データが表示されません。単純にポインターをインクリメントして、一度に 1 バイトずつフレーム -> イメージからデータ オブジェクトに転送することはできますが、配列構造をデータ オブジェクトに伝達する方法がわかりません。何か案は?ありがとう

あなたの提案を使用したその他の試み 次の方法で、このデータを .TIF ファイルに変換できます。

for (uint32 row = 0 ; row < MaxHeight ; row++)  
{
    for (uint32 column = 0;column< MaxWidth;column++)
    {
        tempData = (uint8_t)*frame->image;  //first byte
        *frame->image++;
        buf[2 * column + 1] = (unsigned char) tempData;
        tempData = (uint8_t)*frame->image;  //second byte
        *frame->image++;
        buf[2 * column] = (unsigned char) tempData;
    }
    TIFFWriteScanline(tiffile,buf,row,0);
}

このように生成された .TIF ファイルを使用して、NSImage を作成して表示できます。

NSImage *TestImage = [[[NSImage alloc] initWithContentsOfFile:inFilePath] autorelease];
[viewWindow setImage: TestImage];

私の質問は、同じ方法で表示できる NSData オブジェクトを作成できますか? 私は次のことを試しました(製品は画像の高さ*幅です):

NSData *ReadImage = [[[NSData alloc] initWithBytes: frame->image length:2*product]  autorelease] ;
NSImage *NewImage = [[[NSImage alloc] initWithData:ReadImage] autorelease];
NSSize newSize;
newSize.height = MaxHeight; //height of the image
newSize.width = MaxWidth; //width of the image
[NewImage setSize:newSize];
[viewWindow setImage: NewImage];

これを試してみると、何も表示されません。また、データを持つ uint16_t の配列を作成し、それへのポインターを提供しようとしましたが、何も表示されません。何か案は?たとえば、1 ピクセルあたり 2 バイトを使用していることなどを NSData に通知する必要がありますか? ありがとうモンティ・ウッド

4

1 に答える 1

0

NSDataポインタを持つブロックを含むオブジェクトを作成するには、 で始まる 3 つのメソッドのいずれかを使用initWithBytes:するか、自動解放されたNSDataオブジェクトを作成するには、で始まるクラス メソッドのいずれかを使用する必要があります。dataWithBytes:

更新:NSImageから直接を作成する場合は、表現が何であるかを把握できるNSDataように、データに適切なヘッダー/マジック ナンバーを含める必要があると思います。生の画像データについては、Cocoa Drawing Guide のImagesのNSImageを参照してください。NSBitmapImageRep

于 2011-04-26T20:31:51.403 に答える