VC++/DxLib 大きさが分からない画像の分割読み込み

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
moba
記事: 82
登録日時: 8年前

VC++/DxLib 大きさが分からない画像の分割読み込み

#1

投稿記事 by moba » 8年前

お世話になっています。
キャラチップ画像を分割して読み込みたいです。
検索しても特にヒットさせられなかったので質問させていただきました。

LoadDivGraphを使うには引数に(追記:分割後の1枚当たりの)画像のサイズが必要なので、
キャラチップの大きさが分からない時は、
単純にLoadDivGraphを使うわけにはいかないようです。

なるべく無駄を減らして画像の大きさを取得することはできないでしょうか。
あらかじめ分かっているのは、画像の横と縦の分割数です(6,4)。

DxLibリファレンスページ(下記)を見て、2つの方法を考えました。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
いずれもLoadDivGraphで大きな無駄が出ているのかなと思います。(処理負荷の面で)。


1.LoadDivGraphを使い捨てる
LoadGraph → GetGraphSize →DeleteGraph → LoadDivGraph
► スポイラーを表示
2.LoadGraph → GetGraphSize → DerivationGraph → DeleteGraph
► スポイラーを表示

最後に、2番目の方法は、1番目の方法よりも無駄が少ないでしょうか。
最後に編集したユーザー moba on 2015年12月29日(火) 19:03 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++/DxLib 大きさが分からない画像の分割読み込み

#2

投稿記事 by softya(ソフト屋) » 8年前

LoadGraph → GetGraphSize → DrawRectGraph
という手もあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++/DxLib 大きさが分からない画像の分割読み込み

#3

投稿記事 by softya(ソフト屋) » 8年前

DerivationGraph は元の画像は消せなかったかも。
リソースの無駄は2番目が少ないかなと思いますが、作者ではないので断言はできません。
実測してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

yuran

Re: VC++/DxLib 大きさが分からない画像の分割読み込み

#4

投稿記事 by yuran » 8年前

こちらもご参考までに
画像のサイズだけ取得できるようですよ。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3574

moba
記事: 82
登録日時: 8年前

Re: VC++/DxLib 大きさが分からない画像の分割読み込み

#5

投稿記事 by moba » 8年前

> softyaさん (誤送信を16.56に修正)

いつもありがとうございます。
その方法もあったのですね。場合によってはその方法が一番になるかもしれませんね。

あと、やっぱり処理負荷は自分で測らないとダメですね…。
今は腰が重いのですが、いつかやりたいです。

>yuranさん

ありがとうございます。
リファレンスページには載っていませんが、
今のバージョンのDxLibにもこれらの関数はあるみたいですね。
(まさか画像サイズの取得に最適化? された関数が本当に実装されているとは思いませんでした)
---
// 画像ファイルの横ピクセル数と縦ピクセル数を取得する
int GetImageSize_File( char *FileName, int *SizeX, int *SizeY ) ;

// メモリ上に展開された画像ファイルの横ピクセル数と縦ピクセル数を取得する
int GetImageSize_Mem( void *FileImage, int FileImageSize, int *SizeX, int *SizeY ) ;
---
今は手頃なのでこれを使って、本格的に負荷を考える時には
上記3つの方法と負荷を比較してみようと思います。

hide

Re: VC++/DxLib 大きさが分からない画像の分割読み込み

#6

投稿記事 by hide » 8年前

そんなに画像読み込みの負荷が気になるならメタ情報的なファイルを作ってそっちを先に読んでおくのは?
メモリ的にはほんの少しだけ無駄かも知れませんが、オーバーヘッドは減るんじゃないかなぁ

moba
記事: 82
登録日時: 8年前

Re: VC++/DxLib 大きさが分からない画像の分割読み込み

#7

投稿記事 by moba » 8年前

> hideさん

ありがとうございます。
画像の大きさをあらかじめ入力しておいたファイルを読むということでしょうか。
今は負荷が気になるほどのことはしていないのですが、将来重くなったら試してみます。
画像ファイルのプロパティのコメント欄なんかにサイズを書いておいて、分割読み込みする関数からそれを読むこともできるのかなと思いました。

閉鎖

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