• 締切済み

Jpegファイルのロード・先頭アドレス取得

ある関数の引数にJpegファイルをメモリ上にロードした時の 先頭アドレス(ポインタ)を渡したいのですが、ロードして 先頭アドレスを取得する方法が分かりません。 CImageクラス等でロードは出来たのですが、ファイルの先頭アドレス を取得で出来ません。 何方かお分かりになる方、教えてください。 また、メモリ展開後に先頭アドレスが分かったとしたら、 その後、Jpegファイルとして再び指定パスに保存することは 可能なのでしょうか? 可能だとしたら、合わせて方法を教えていただけると ありがたいです。 Jpeg等の画像ファイルを扱うことが初めての為、困って おります。よろしくお願いいたします。 開発環境 : Win2k, VC++.Net 2003, MFC

みんなの回答

noname#11920
noname#11920
回答No.2

CImageクラスで画像ファイルを読み込むと、 内部のデータの内容はもはや元の画像ファイルとは異なります。 そもそも、画像ファイルを読み込んでピクチャボックスに表示して、 更に何か加工を加え再びそれをファイルに書き出すとしても、 「ファイルの先頭アドレス」を取得する必要は無いはずです。 #1さんが御指摘のように、ファイル操作と混同されているのではないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • g_dori
  • ベストアンサー率47% (330/699)
回答No.1

一体どんな処理をしたいのでしょうか? ファイル操作と画像操作を混同されているように見えて、イマイチ質問の主旨が理解できません。 ファイルの中身をメモリに展開するならCFileなりFILE構造体を用いれば良いです。 JPEGを描画するならCImageなり、gdi+のImageなり、自作クラスなりで対処してください。 CImageもImageもファイルから読み込み、保存をサポートしていますが、JPEGファイルの性質上、保存する場合は画像が劣化します。 >Jpegファイルをメモリ上にロードした時の先頭アドレス については意味がわからないので回答できませんが、恐らくやりたい事と画像ファイルの仕様そのものに食い違いがあると思われます。 BMPファイルを使用するケースにおいても、ファイル構造そのままメモリに展開するケースばかりではありませんから。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 先頭アドレスとは何ですか?

    Cの勉強をするため、Cの勉強用のホームページを読んでいたのですが その中に 「“int a[10];”というふうに配列を宣言した場合、配列名“a”はその配列の先頭アドレスになります」 という一文がありました。これが理解できません。 「アドレス」はメモリ内の、変数が記憶されている場所のことですよね。 先頭アドレスの「先頭」とは一体何に対して「先頭」なのでしょうか。 「一番前」という意味でしょうか。なら何の中で一番前なのでしょう? さらにそのホームページでは 「配列名“a”を式の中に書くと、普通は配列の先頭要素を指すポインタになります」 と言いなおしていましたが、これもよくわかりません。 「先頭要素」とは? 一体何に対する先頭なのでしょう?要素の先頭とは何を指すのかがいまいちピンときません。 初心者にありがちなお恥ずかしい質問ではありますが、ご教授いただければ幸いです。

  • ファイルストリームからファイル名とパスの取得

    例えば、 ofstream file( "ttt.txt" ) としてファイルストリームを作った後で、このインスタンスを使ってfileが指しているファイルのファイル名やファイルのパスを取得することはできるのでしょうか。C及びC++の勉強をしていまして、できればOSやコンパイラに依存しない方法があれば知りたいと思っております。また、WindowsXP、VC++6.0(MFCは使っていません)を使っていますので、これらに依存した方法があるようでしたら教えていただけないでしょうか。お願いします。

  • テキストファイルの先頭から文字を1文字ずつ取得し、

    テキストファイルの先頭から文字を1文字ずつ取得し、 同時に各文字の文字コード、バイト数、及びファイルポインタを取得したいです。 ただし改行、タブ、BOM、及びファイル末尾の連続する空白は除外します。 扱うテキストファイルのエンコーディング方式は統一されませんが、 Shift_JIS、EUC-JP、UTF-8、UTF-16LEに限定されると思います。 尚、テキストファイルのエンコーディング方式の特定については、 外部リソースへの問い合わせにより解決します。 例として次の様なファイルがあります ファイル名:test.txt コーディング方式:Shift_JIS 内容:あiウ この場合ですと、 1文字目 ├文字コード=あ ├バイト数=2 └ファイルポインタ位置=0 2文字目 ├文字=i ├バイト数=1 └ファイルポインタ位置=2 3文字目 ├文字=ウ ├バイト数=1 └ファイルポインタ位置=3 となり、上記ファイルのエンコーディング方式がUTF-8であった場合、 1文字目 ├文字=あ ├バイト数=3 └ファイルポインタ位置=0 2文字目 ├文字=i ├バイト数=1 └ファイルポインタ位置=3 3文字目 ├文字=ウ ├バイト数=3 └ファイルポインタ位置=4 となって欲しいです。 現在色々調べつつやっていますが、なかなか具体的な方法が見えてきません。 InputStreamReaderクラスを使ってエンコード方式を指定すれば中身を読めますが、読み込み元のバイト数が取得出来ず、ポインタも取得できません。 しかしRandomAccessFileクラスを使って読むとポインタの取得行える物の、エンコーディング方式を指定できません。 そんなこんなではまりこんで困っております。どういったクラスを使えば良いか等、情報をいただければ幸いです。 どうかお助け下さい。

    • ベストアンサー
    • Java
  • IPアドレスの取得、パスの取得

    初歩的な質問で申し訳ないのですが Visual Basic5.0において 1.自分のコンピュータのIPアドレスの取得方法 2.実行中のexeファイル自身のパスの取得方法 がわかりません。どなたか教えてください。 できれば、例があるとうれしいです。

  • ファイル名の取得について

    よろしくお願いします、 環境はWindows 2000 SP4 Visual Studio VC8です openFileDialogクラスのFileNameメソッドで フルパスのファイル名を取得できますが、 ファイル名だけ取得したい場合はどのメソッドまたはクラスを使用したら出来るでしょうか?

  • CStaticコントロールの静的イメージ描画

    はじめまして、質問させてください。 VC++ 2005 MFC で開発しております。 Picture Control(DDX CStasic型)に イメージ(外部ファイル JPG)を静的に描画させたいのですが 方法がわかりません。 お詳しい方がおられましたら、ご教授お願いいたします。 ちなみに CImageを使用して描画はできるのですが その場合、OnPaintをオーバーライドして 描画更新処理を書かないと一度だけ描画されて終わって しまうと思います。 CStaic変数にロードしたら 再度ロードされるまで ずっと描画させていたいです。 以上になります。 宜しくお願いいたします。

  • エクスプローラからのファイルパス取得

    【OS】XP-PRO 【言語】Delphi-5 エクスプローラから、選択されたファイルの一覧とパス名を取得したいと思っています。 選択されたファイルは、VirtualAllocExとSendMessageを使用して取得出来ました。 選択されたファイルのパスはどのように取ればいいかわかりません。 コマンドライン引数以外の方法でお願いします。

  • 元画像のDPIを維持したままJPEGを保存するプログラム

    JPEGファイルを読み込んで加工した後、元画像のDPIを維持したまま JPEGファイルに保存するプログラムを作成したいのですが、その方法が 分かりません。 環境は以下のとおりで、この環境を変えることは不可です。 ・WindowsXP/Vista ・.NET Frameworkのインストールなし ・サードパーティのライブラリを使用しない (もし使用する場合は、自由に再配布可能なものに限る) ・Visual C++で開発 たとえば、400dpiのJPEGファイルを読み込んで、画像を編集した後に、 再度400dpiでJPEGファイルに保存したいのですが、MFCのCImage::Saveを 使用して保存すると、DPIが失われてしまいます。 よろしくお願いします。

  • バッチファイル 二つ上のディレクトリのパス取得

    "C:\test\sample\a.bat"を実行した時 %~dp0 で C:\test\sample\ と展開できるのですが、 この時 C:\test\ というパスを取得するにはどうすればいいでしょうか? バッチファイルから二つ上のディレクトリのパスを取得する方法を教えていただきたいです。 よろしくお願いします。

  • bmp → jpeg への変換

    こんにちは, VC++6.0 MFC ダイアログベースでソフトを作成しています. そこでbmp画像を読み込んでjpeg画像に変換したいと思っています. プログラム自体は前任者から引き継いだものです. そこではJPEG-6bというオープンソース?を使って変換を行っています. ただ処理速度が遅く,もっと早くしたいと思っています. 他によい(JPEG-6bより高速)変換方法はないでしょうか?