メモリ上の画像データの表示について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
加藤良樹

メモリ上の画像データの表示について

#1

投稿記事 by 加藤良樹 » 7年前

 お世話になります。
 C言語を初めてまだ2,3年のものです。
 DXライブラリを使用して、HDD上のPNGファイルをディスプレイに表示させる方法はたいへん参考になりました。

 さてPNGファイルになっている画像データをDXライブラリを使用して、ディスプレイに表示させる方法は理解できたの
ですが

※HDD上のRawデータをメモリに読み込み、画像処理したメモリ上のデータをディスプレイに表示させる事はDXライブラリ
で可能でしょうか?

 下のコードは800X800pixelのRawデータをHDD上から読み込み、単純に間引いて、400X400pixelの画像に縮小して
RawデータとしてHDDに書き出すコードです。

 コードの//★の部分では、縦横1/2に縮小されたRawデータがメモリpDst1上にすでに存在しております。
 このメモリ上のデータをディスプレイに表示させるにはどのような手法をとればよろしいでしょうか。

 1/2に縮小されたメモリ上のRaw画像データをヘッダなどを付けてPNGファイルとして一度、HDDに書き出して、再度
読み込ませれば、DXライブラリでディスプレイに表示できますが、RAWデータをPNGファイルし、HDDに一度、書き出す
という手間がかかります。
 メモリ上のRawデータを直接、ディスプレイに表示させる方法があれば、是非、ご教授頂きたく、書き込みさせて頂き
ました。 

 以上よろしくお願いいたします。
 

コード:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int inwidth = 800;
int inheight = 800;

int outwidth = 400;
int outheight =400;

int x,y,i =0;


unsigned char* pSrc1;
unsigned char* pDst1;

FILE *fp1;


int main(void)
{


//入出力画像のメモリエリア確保
pSrc1= (unsigned char*)malloc(inwidth*inheight);

pDst1 = (unsigned char*)malloc(outwidth*outheight);

//Input_image Read from FILE

   fp1 = fopen("InputImg.raw","rb");
   if(fp1 == NULL){
	   printf("Input FILE Error!!\n");
	   getchar();
	   return -1;
   }
   	  
	    fread(pSrc1,sizeof(unsigned char),inwidth*inheight,fp1);
		fclose(fp1);
	
	 printf("Read Data Finish!!\n");

//Horizontal& Vertical 1/2 Decimation

	 i = 0;

	 for(y = 0 ; y <inheight ;++y){
	  for(x = 0 ; x <inwidth ;++x){

		 if((x % 2)&& (y%2) == 0){
			 pDst1[i]= pSrc1[y*inwidth + x];
			 i++;
		 }

	  }
	 }

	 printf("Finish 1/2 Reszie\n");

//★


//Outimage Write to FILE

   fp1 = fopen("OutputImg.raw","wb");
   if(fp1 == NULL){
	   printf("Output FILE Error!!\n");
	   getchar();
	   return -1;
   }
   	  
	    fwrite(pDst1,sizeof(unsigned char),outwidth*outheight,fp1);
		fclose(fp1);


	free(pSrc1);
	free(pDst1);

	 printf("Finish All proces!!s\n");


getchar();

return 0;
}


ホヅミ
記事: 110
登録日時: 9年前

Re: メモリ上の画像データの表示について

#2

投稿記事 by ホヅミ » 7年前

http://homepage2.nifty.com/natupaji/DxL ... html#R20N3
このページによると
ドット単位で画像データを操る
int MakeARGB8ColorSoftImage( inwidth, inheight ) ;
int DrawPixelSoftImage( int SIHandle, int x, int y, int r, int g, int b, int a ) ;
int CreateGraphFromSoftImage( int SIHandle ) ;

といったものがあるそうです。

加藤良樹

Re: メモリ上の画像データの表示について

#3

投稿記事 by 加藤良樹 » 7年前

 ホヅミ様、早速のご回答ありがとうございました。早速、コード作成にトライしてみます。

閉鎖

“C言語何でも質問掲示板” へ戻る