トップページ > 過去ログ > 記事閲覧
グラフィックハンドルから画像データのアドレスとサイズを取得
名前:ヨウ 日時: 2013/01/07 04:19

LoadGraph()等で生成したグラフィックハンドルから、 メモリ上にある画像データのアドレスとサイズを取得することは可能でしょうか。 送信側:LoadGraph()で画像を読み込み 送信側:アドレスとサイズを取得してNetWorkSend()で画像データを送信 受信側:データを受信 受信側:CreateGraphFromMem()でグラフィックハンドルを生成 という処理を実行したいのですが…

Page: 1 |

Re: グラフィックハンドルから画像データのアドレスとサイズを取得 ( No.1 )
名前:Will 日時:2013/01/07 11:33

LoadGraphで読み込まれた後のデータでなければならない理由が何かあるのでしょうか。 私なら以下のようにします。 1.送信側はロードしたい画像ファイルをバイナリリードしてそのデータを送信 2.受信側で受信したデータからCreateGraphFromMemを使用 あと、LoadGraphでできたメモリ上にあるデータが仮にアクセスできたとしても、 それはDXライブラリ固有のフォーマットであってグラフィック形式ではないだろうから 多分CreateGraphFromMemでは使用できないとおもいます。
Re: グラフィックハンドルから画像データのアドレスとサイズを取得 ( No.2 )
名前:ヨウ 日時:2013/01/07 14:18

返答ありがとうございます。 確かに上記の処理だけを実行する場合はWillさんの方法で可能です。 簡潔に書こうと思ったら本質を伝えられなくなっていました、すみません。 以下が本来の処理です。 【定義】 端末pcA, pcB, pcCがあります。 この端末はそれぞれ画像imgA, imgB, imgCを持っています。 画像を読み込んだグラフィックハンドルをそれぞれhndA, hndB, hndCとします。 受信してCreateGraphFromMemでグラフィックハンドルを生成した直後に受信データは破棄します。 【0】 初期状態 pcA - imgA pcB - imgB pcC - imgC 【1】 1. pcAがimgAをロード、グラフィックハンドルを生成 pcA - imgA, hndA pcB - imgB pcC - imgC 【2】 1. pcBがimgBをロード、グラフィックハンドルを生成 2. pcBがpcAにimgBを送信。pcAがそれを受信、グラフィックハンドルを生成 3. pcAがpcBにimgAを送信。pcBがそれを受信、グラフィックハンドルを生成 pcA - imgA, hndA, hndB pcB - imgB, hndB, hndA pcC - imgC 【3】 1. pcCがimgCをロード、グラフィックハンドルを生成 2. pcCがpcAにimgCを送信。pcAがそれを受信、グラフィックハンドルを生成 3. pcAがpcCにimgA, imgBを送信。pcCがそれを受信、グラフィックハンドルを生成 4. pcAがpcBにimgCを送信。pcBがそれを受信、グラフィックハンドルを生成 pcA - imgA, hndA, hndB, hndC pcB - imgB, hndB, hndA, hndC pcC - imgC, hndC, hndA, hndB といった処理が理想です。 しかし実際には、3-3でpcAがpcCにimgBを送信しようとしても、画像データがないので送信できません。 そこでグラフィックハンドルから画像データに復元することができたら、この処理が実現するのではないかと思い、質問させていただきました。 分かり辛いかとは思いますが、アドバイスいただけると幸いです。
Re: グラフィックハンドルから画像データのアドレスとサイズを取得 ( No.3 )
名前:Will 日時:2013/01/07 15:42

用途はよくわからないですが、やりたいことはわかった気がします。 確認ですが、受信した画像データを受信PC側でファイル保存してはいけない設計仕様なのでしょうか? もしくは、受信した画像データをメモリ上のどこかに記憶させておくのもダメとか。 それらが一番簡単なのですが。 一応、画像ハンドルから画像ファイルにする関数(SaveSoftImageToBmp、SaveSoftImageToPng、SaveSoftImageToJpeg)も ありますけど一時的にでもファイル保存してはいけないのであればこれもダメでしょうか。 ファイル保存しないことを前提に作るなら、 > 3. pcAがpcCにimgA, imgBを送信。pcCがそれを受信、グラフィックハンドルを生成 > 4. pcAがpcBにimgCを送信。pcBがそれを受信、グラフィックハンドルを生成 は 3. pcAがpcCにimgAを送信。 pcAがpcBにpcCにimgBを送信するように命令。 pcBはpcCにimgBを送信。 pcCがそれぞれを受信、グラフィックハンドルを生成 4. pcAはpcCにpcBにimgCを送信するように命令 pcCはpcBにimgCを送信。 pcBがそれを受信、グラフィックハンドルを生成 というふうにしますね。 pcAはpcXから画像imgXを受信した時に、pcXがimgXを持っていることを覚えておく必要がありますけど。 でも、書かれている内容でもpcAは各pcがどの画像を持っているか知らないと【3】を実現できないから これでもいいのかな?
Re: グラフィックハンドルから画像データのアドレスとサイズを取得 ( No.4 )
名前:ヨウ(解決) 日時:2013/01/08 15:47

当初は受信したデータをメモリ上に保持し、それをやり取りする方法が最善かと考えていましたが、 確認したところ、受信したファイルをHDDに保存した方がその後の処理が容易になりそうです。 また、後者の案ですが 元々その画像を持っていたPCが、ネットワークから離脱している可能性があります。 以上を踏まえて、受信したデータを自身のHDDに保存し、送信する時はHDDから再度読み込む という処理にします。 Willさん、ご協力ありがとうございました。

Page: 1 |