アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは,
VC++6.0 MFC ダイアログベースでソフトを作成しています.

そこでbmp画像を読み込んでjpeg画像に変換したいと思っています.
プログラム自体は前任者から引き継いだものです.
そこではJPEG-6bというオープンソース?を使って変換を行っています.
ただ処理速度が遅く,もっと早くしたいと思っています.

他によい(JPEG-6bより高速)変換方法はないでしょうか?

A 回答 (2件)

>他によい(JPEG-6bより高速)変換方法はないでしょうか?



.NETが使えるなら
http://www.atmarkit.co.jp/fdotnet/dotnettips/533 …
の方法を用いて「WindowsにインストールされているJpegエンコーダを呼び出せる」のですが…。

MFCダイアログベースでは「コーデックのリストを取得し、エンコーダを特定し、エンコーダをロードして、エンコーダの初期化をして、エンコーダに静止画1枚をフレームデータとして入力ストリームに流し込み、出力ストリームに出て来たフレームデータをjpegデータとして保存する」と言う作業を「すべて自前で」行う必要があるでしょう。

.NETの場合、ImageオブジェクトのSaveメソッドで上記のような「色々と面倒な事」を内部でやってくれるので、簡単なんですが…。

簡単ではありませんが、MFCでコーデックを呼び出して使用する方法が、必ずある筈です(当方なら、そんな苦労はしたくないので.NETに乗り換えますが)

>そこではJPEG-6bというオープンソース?を使って変換を行っています.

今の時代、たいていのWindowsで標準でJpegのコーデックがインストール済みなので、自前で変換したり、追加ライブラリで変換するのは時代遅れと言えます。

.NETなど、コーデックを簡単に呼び出せる環境を使って「関数一発」が今のトレンディです。

全体を.NETに乗せ換えるのが無理なら、jpeg保存処理だけ.NETで組んで別モジュールにして、本体でモジュールをロードして呼び出して使う、などで良いかも知れません(要は、jpegの保存ルーチンをプラグイン化して、本体プログラムでプラグインをロードして使う、と言う事)
    • good
    • 0
この回答へのお礼

ありがとうございます.
その方法で試してみようかと思います.
今回は処理速度重視なので
簡単さも重要ですが,他にもよさそうな方法があれば
またお願いいたします.

お礼日時:2009/10/29 20:05

VC6からなら GDI+かなぁ ・・・



変換に時間がかかっているのか ファイルのIOで時間をとられているのか検証してみたほうがいいかも

VC6付属のMSDNに GDI+を使ってPNGで保存するサンプルがありますよ
『Converting a BMP Image to a PNG Image』
この保存方式を決めている
GetEncoderClsid(L"image/png", &encoderClsid);

GetEncoderClsid(L"image/jpeg", &encoderClsid);
に変更すれば出来るはずです

参考URLは 英語版です

参考URL:http://msdn.microsoft.com/en-us/library/ms533837 …
    • good
    • 0
この回答へのお礼

返信遅くなり申し訳ありません.
ありがとうございます.
IOと比較して変換に多く時間がかかっているようです.
ちょっと難しそうですが,調べてやってみようと思います.

お礼日時:2009/11/06 18:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A