2

PNG をインポートして Motif アプリケーションの画面に表示する必要があります。私自身が最もよく知っている理由から、必要以上のライブラリを使用したくなく、Motif と pnglib だけを使い続けたいと思っています。

ここ数日、この問題と戦っています。プライドを捨てて、助けを求めたいと思います。このスクリーンショットは問題を示しています。

https://s3.amazonaws.com/gtrebol264929/pnglib_fail.png

右側のウィンドウは、イメージがどのように見えるかを示しています。左側のウィンドウは、アプリケーションでどのように見えるかを示す Motif アプリケーションです。写真の基本的なコンセプトが見られるので、明らかに画像データは問題ありません。しかし、明らかに、ピクセルデータをpnglibからXImageに取得する方法を台無しにしました。以下は私のコードです:

char * xdata = malloc(width * height * (channels + 1));
memset(xdata,100,width * height * channels);    

int colc = 0;
int bytec = 0;
while (colc < width) {
    int rowc = 0;
    while(rowc < height) {
        png_byte * row = png.row_pointers[rowc];
        memcpy(&xdata[bytec],&row[colc],1);
        bytec += 4;

        rowc += 1;
    }
    colc += 1;
}



XImage * img = XCreateImage(display, CopyFromParent, depth * channels, ZPixmap, 0, xdata, width, height, 32, bytes_per_line);
printf("PNG %ix%i (depth: %i x %i) img: %p\n",width,height,depth,channels,img);


XPutImage (display, win, gc, img, 0, 0, 0, 0, width, height); // 0, 0, 0, 0 are src x,y and dst x,y

png.row_pointers は、pnglib のピクセル データです。

ピクセルデータがどのように保存されているかを誤解しているだけだと確信していますが、何が間違っていたのかはわかりません。どんな助けでも大歓迎です。

ではごきげんよう

ギャリー

4

0 に答える 0