無題

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

無題

#1

投稿記事 by ウサギ » 16年前

初めましてです
現在、画像ファイルからメモリへの読み込みを試行錯誤しているんですが、
分割してすでに読み込んだ画像を、さらに分割して読み込むことは可能でしょうか?

具体的には縦に三分割した画像の二番目だけを横に二分割したいのですが、
何か良い手段はないのでしょうか?

C言語初心者なもので、どなたかご指導の方をお願いします

SooA

Re:無題

#2

投稿記事 by SooA » 16年前

規約を読んで質問に必要な内容を確認してください。

kazuoni

Re:無題

#3

投稿記事 by kazuoni » 16年前

画像の大きさが分かっているなら、
DerivationGraph()で指定範囲を新たなグラフィックとして生成できます。
具体的には以下の関数で実装できるかと。
void LoadDivGraphToHandle(const int s_Handle,int AllNum ,int XNum , int YNum ,int XSize , int YSize , int *HandleBuf )
{
	int pointX=0;
	int pointY=0;
	for(int i=0 ; i<AllNum ; ++i)
	{
		HandleBuf=DerivationGraph(pointX,pointY,XSize,YSize,s_Handle);

		if(!((i+1)%XNum))
		{
			pointX=0;
			pointY+=YSize;
		}
		else
			pointX+=XSize;
	}
}


本家のLoadDivGraphもどきです。ただ、戻り値なしにしているので、よくないです。。
本家はエラーが返ってくる(-1)っとなっていますが、
・エラーが出た際、今までに確保したハンドルがどうなるか
っというのが自分はよくわからなかったため、実装してません。
また、画像の大きさを超えた領域を読み込もうとすると危ないです。
XSize*XNum=基になる画像ハンドルの画像のWIDTH
YSize*YNum=基になる画像ハンドルの画像のHEIGHT
になるようにしてください。

余裕があったらこの未実装のあたりを実装してみてください。


const int s_Handleは元になるハンドル
int *HandleBufは新たに分割したハンドルを記憶するハンドルの先頭のアドレス(配列)
です。

ウサギ

Re:無題

#4

投稿記事 by ウサギ » 16年前

できました!
>>kazuoniさん
丁寧なアドバイスどうもありがとうございました
未実装のところはいずれ腕が上がってからまたチャレンジしてみます
本当にありがとうございました

>>SooAさん
自分では規約の通りにできているつもりでしたが、言葉足らずで本当に申し訳ありませんでした

SooA

Re:無題

#5

投稿記事 by SooA » 16年前

DXライブラリによるソースで回答しようかと思いましたが、
使用環境、コンパイラ、ライブラリの使用の有無も書かれていないので
確認してから回答しようと思ったのです。
違ってたら無駄になりますので。

kazuoni

Re:無題

#6

投稿記事 by kazuoni » 16年前

確かにそうでしたね。。SooAさんのおっしゃる通りです。
自分は決め打ちしていました。
今回はたまたま質問側と回答側の意図した事が一致しただけです。

次回からは必要事項を明記してください。

閉鎖

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