• ベストアンサー

画像フォーマットの読み書き

設計の段階で迷っています。知恵をお貸し下さい。 グラフィック系のソフトを開発しようと思います。 そのときにJPEGをはじめ多くのフォーマットの読み書きを検討しています。 当初はSUSIEを検討しておりましたが、こちらは出力プラグインがないことや プラグインの数が多いことなどから諦める方向です。 とりあえずWEBを検索してみて次の3つの方法があるのではと推測しました。 1 OpenGLを使う 2 DirectXを使う 3 JpegLibなどオープンソースのライブラリを使う しかし、これらの方法で本当に実現可能かどうかが分からないのです。 はたまた可能として、どれを使用すればベストなのかも予想がつかないのです。 一番確実なのは3番だと思いますが、 この場合は1つのフォーマットにつき1つのライブラリとなるので 多数のフォーマットに対応できるのか、 そしてSUSIE同様多くのプラグインが必要になるかどうかが焦点になります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

>フォーマットごとにソースを用意する必要があるのではと思ったので、 コードが増えることに何か問題があるのでしょうか。 別にコードをそのままプロジェクトにいれなくても libpng等はVC++でdllを作るプロジェクトファイルがあるので それをVB側から呼び出せばいいでしょう。 どちらにしても全てのフォーマットへの対応を 全て自分で書くのはしんどいので 手直しするといっても 他人の力(オープンソース)は必要でしょう。 dll化してVBから呼び出すって感じでしょう。 というかsusieのプラグインも単なるDLLのようです。 http://www.asahi-net.or.jp/~kh4s-smz/spi/make_spi.html http://www2f.biglobe.ne.jp/~kana/develop.html http://www2f.biglobe.ne.jp/~kana/howtospi/spi_wrapper.txt susieのプラグインは 読み込み機能はあっても書き出しは無いようですね。

hawkwind
質問者

お礼

たびたびのご指摘ありがとうございます。 >コードが増えることに何か問題があるのでしょうか。 コードが増えると管理項目、テスト項目も増えるので大問題です。 >全てのフォーマットへの対応を全て自分で書くのはしんどいので >手直しするといっても他人の力(オープンソース)は必要でしょう そうですね。前にbmpやAVIの構造を分析したときでさえ結構時間がかかりました。 JPEGなどはそれに比べはるかにややこしいですから とても全部を自分で何とかする気になりません^^; どうもこの手の部品はありそうでいてないようで、 なかなか思わしいものが見つかりませんでした。 オープンソースについては早くから見つけていたのですが、 日本語の資料が少ないことと、他に出来合いの何かが見つかればと思ってここで質問しました。 ここで皆さんのお知恵を拝借しまして オープンソースを利用するということで調整していきたいと思います。 どうも有り難うございました。

その他の回答 (3)

  • bulgaris
  • ベストアンサー率50% (8/16)
回答No.3

OpenGLについて回答すると、 OpenGLはJPEGとかPNGとかの画像ファイルを読み書きするような 高級機能は提供していません。 アプリケーション側で実装してね。というスタンスです。

hawkwind
質問者

お礼

情報提供ありがとうございます。 こちらで用意する必要がありますか・・・ なら、却下ですね。。。 選択肢が1つずつ狭まりました。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

市販のライブラリを使用してみては。 LEADTOOLS 14.0J Raster Imaging Pro http://www.grapecity.com/Japan/support/database/P1_287.htm LEADTOOLS Raster Imaging SDK http://www.leadtools.com/SDK/Raster/Raster-Imaging.htm およそ考えられる限りのラスター画像フォーマットに対応しています。

hawkwind
質問者

お礼

お返事ありがとうございます。 leadtoolsも調査はしましたがこちらは非常に高級でして ライセンス価格と機能の生産性が折り合わずに見送りました。 情報のご提供ありがとうございます。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

どういうソフトをどういう環境で作るのかがわかりませんが オープンソースのライブラリを使えば確実だと思います。 ちなみにDirectXの利用といいますが DirectXでJPEGでテクスチャの読み込み等には対応していますが それは画像を扱う為では無いと思います。 (DirectXの機能で書き出しはできたかな・・・) あとGIF等は対応してないですし。 >この場合は1つのフォーマットにつき1つのライブラリとなるので >多数のフォーマットに対応できるのか、 >そしてSUSIE同様多くのプラグインが必要になるかどうかが焦点になります。 hawkwindさんはどうやって実現しようとしているのでしょうか? プログラミングのカテゴリーですしプログラムするのですよね? オープンソースのライブラリはその名の通りソースで配布されているので 複数のソースをまとめてコンパイルすればなんら問題はありません。 当然言語はC/C++になります。(普通オープンソースのソースはCですから) あと「プラグインが必要になるかどうか」というのが、意味がよくわかりません。 基本的に自分でソースを埋め込むのならプラグインは必要ないですし、 拡張性を持たせる為プラグインに対応させるということは可能です。 SUSIEについてはよく知りません。

hawkwind
質問者

お礼

お返事ありがとうございます。 今回は既存のプログラムの手直しということで検討しております。 既にフォームや機能の大部分はVB6.0で作成しておりますが、 今まではBMPの読み書きとJPEGの読み込みだけに対応しておりました。 ということなのでVB、およびVCということで考えています。 調査に先立ちVix、irfanview等の色々なフリーウェアをみてみましたが、 Susieなどのプラグインタイプかオープンソースを使用しているものが殆どでした。 ただ、webの検索の最中に1件だけOpenGLを使った画像ビューワがありました。 しかし、単なる記事だったのでOpenGLの場合はことの真偽を確かめようと思いました。 また、OpenGLと対極にあるDirectXでは可能かなと思った次第です。 更にオープンソースを使った場合は フォーマットごとにソースを用意する必要があるのではと思ったので、 コードが増えそうで利用するのに悩んだ次第です。

関連するQ&A

  • VB6で画像の読込みと書込み

    VB6でJIFやJPEGなどを読書きする手法を模索しています。 基本的なフォーマットはbmp、GIF、JPEGで十分なのですが、 TIFFなどもう少し間口を広げて対応したいと思います。 文化オリエント社からleadtools Documentというものが出ていましたが、 値段が30万ととても手が出せません。 (機能も凄いですが・・・要らないものばかり^^;) 定番だとSUSIEプラグインということになるのでしょうが、 SUSIEではプラグインをユーザの環境に用意しなければならない上に 出力に関しては策定が放棄されているようです。 どなたかActiveX コントロールを公開しているなどの情報があればお願いします。 入力SUSIE、出力ACTIVEXコントロールなどの組み合わせも視野に入れています。

  • NTFSフォーマットでの読み書き

    Mac mini MacOS X Leopard 環境です。 http://inforati.jp/apple/mac-tips-techniques/windows-hints/how-to-write-ntfs-hard-disk-of-windows-from-mac-os-x.html を参考にMacから外付けのNTFSフォーマットHDDを読み書きしようとNTFS-3Gをインストールしたのですが、エラーメッセージダイアログが出てNTFSの読み書き使用ができません。マウントが出来ません。またHDDを接続するとメッセージダイアログが2つ出てきます。 一つはfusefs.kextがちゃんとインストールされていない旨のメッセージ、もう一つはマウントできませんでした的なメッセージだったと思います。 再インストールをしたり、多くの日本語HPを読んだりして対応策を探したのですが見つけられませんでした。NTFS-3Gなどの使用経験のあるかたなど、問題の対処方法などご存知ありましたらアドバイスをいただけたらと思います。 よろしくお願いします。

    • 締切済み
    • Mac
  • 画像を回転するには?

    ページ上に配置されたボタンをクリックすることにより、表示されている画像を90度回転させたいのですが、なかなかよい方法が見つかりません。回転そのものは、IEであればDirectXを用いたフィルタ、Firefox、Operaであれば、canvasタグで実現できるかと思いますが、できれば、DirectXがサポートされていない環境でのIE、Netscape等、より多くのブラウザ上で動作させたく、どなたかよい方法をご存知の方がいらっしゃいましたら教えていただけないでしょうか。よろしくお願いします。

  • DirectX9でのテクスチャフォーマットについて

    いつもお世話になります。 VC6.0&WIN2000、DirectX9.0でプログラムを作っています。 D3DXCreateTextureFromFileInMemoryEx関数でテクスチャを読み込んだあと、テクスチャのメンバ関数のGetLevelDescを行ってみました。 すると、フォーマットの返り値が必ず D3DFMT_A8R8G8B8 になります。 D3DXCreateTextureFromFileInMemoryEx関数で指定したフォーマットと違うのですが、これは何故でしょうか? また上記のせいか、元々の画像ファイルのサイズよりも、多くのメモリを使用しています。 おそらく、1ピクセルを D3DFMT_A8R8G8B8 の大きさでメモリを確保してしまうからだと思うのですが、本来の画像フォーマットの大きさで確保する方法はないでしょうか? それでは、どうぞ宜しくお願いします。

  • WMPライブラリにFLV等を追加したい

    Windows Media Player 11,12 を使っています。 WMPのライブラリ機能は便利ですが、一部の動画や音楽、画像のファイルを追加できません。 .mp4 や .mp3 等の一般的なファイルフォーマットは追加できますが、.flv や .ape は追加できないようです。 コーデックはインストール済みですので再生は可能です。 WMPのライブラリに追加できるファイルはプラグインによって増やすことも可能なようですので、どこかにファイルフォーマット一覧があるのでは、と思います。 拡張子を.avi等に変え、偽装するという方法はいやなので、何か良い方法は無いでしょうか。 ソフトウェアインストールでもレジストリ編集でもかまいません。お願いします。

  • photoshopでの画像保存方法について質問です

    現在photoshop CS5を使っています。その前はphotoshop elements8を使ってました。レタッチし編集した画像はwebで保存するという作業で保存してました。何でかというと、前は自分のhome pageに載せるためにデジタル写真の加工をしていたので、誰に聞いたわけでもなく「webで保存する」という作業で保存していました。shotoshop CS5を使うようになってから、「webで保存する...」という作業に支障が出たので「別名で保存する」という方法でやってみましたが、これはJPEG 2000というフォーマットが対応になっているようで、従来のJPEG形式では保存できません。そしてJPEG 2000で保存した場合(この保存の画面上の指示も多くはよくわからないことばかりなのですが)、保存したファイルを見ることができません。多分、JPEG 2000のフォーマットファイルを扱えるソフトが無い?のだろうと思います。それで、何が聞きたいかというと「そもそも、WEBで保存するという作業と、別名で保存するという作業に違いがあるのでしょうか?そして結果として保存された画像にどんな違いがあるのか?ということが知りたいということと、仮にJPEG 2000形式で保存できたとして、それを他のどんなPCでも見ることができるのでしょうか?ということを知りたいのです。ちなみに自分のPCはOSがXPで、CPUがCore2 Duo E4500 2.2GHzです。どなたかよくご存知の方、教えてください。お願いします。

  • レンズ種類の判定、焦点距離範囲の選別(JPEG,E

    現在、高倍率レンズを使用しております。 標準域、または、望遠域のズームレンズ、または、単焦点レンズの買い増しを検討しております。 これまで撮影した写真の焦点距離の傾向をつかみたいと考え、EXIFデータ等から、 18-50mmの範囲の焦点距離は、これとこれ、合計何枚、70-300は合計何枚 といったような 処理ができないかと考えました。 画像表示ソフトでEXIFデータにて焦点距離を1枚ずつみるのではなく、 一括処理できる方法があれば回答をお願い申し上げます JPEG Analyzer plus というソフトを使ってみたのですが、 思ったような使い方がよくわかりませんでした。 アドバイスよろしくお願いします。

  • C++/CLIで画像処理

    お世話になります VC 2010 C++/CLIで作成されている、既存プロジェクトに以下のグラフィック機能を追加したいのですが、 色々試しては挫折してます。 実現可能なライブラリを教えていただけないでしょうか。 【補足】 ・既存プロジェクトはそれなりに大きなものなので、既存部の書き換えは考えておりません ・既存プロジェクトはPictureBoxで出来る範囲の色々な描画を行っているので、ここはそのまま残す予定 【追加機能】※ 以下は新規に子フォームを作成して、独立した機能として追加予定 1. 異なるサイズの画像(写真)を重ねて描画する(これは、単純なので標準の機能を始め全てで出来ます。) 2. 上面の画像を半透明にして、背景の写真を透過 (上面画像の背景を透過するのではなく、上面画像の全体を透過) 3. 上面の画像をマウスに追従して移動 4. 上面の画像の4点を個別にマウス指定で変形 5. 1~4で出来上がった画像の合成&出力 【試したもの】(理解ミスが有るかもしれません) ※事前検討で実現困難なライブラリも小細工できないかと、念のためそれぞれ試しております。 1. 標準の機能 ・アドバイスをいただき、透過はできたのですが、4の変形ができない (画像データを変形毎に計算して求めるのは非現実的なので適用していません・・変形後も移動が有る為) 2. OpenCV ・透過処理がアルファブレンドなので、3の処理が遅い (理想はOpenGLの様にZバッファを使用して、背景が透過するもの・・・背景を意識しない処理のみで済むもの) ・透過処理がアルファブレンドなので、同サイズの画像か背景を上面と重なる部分を検出して切り出す必要がある (上面の画像の変形を考えると、背景を上面に合わせて切り出すのは困難) ・4が矩形しか対応していないので、ひし形までしか変形できない (視点の変更で形状こそ求めているものに近くなるが、今回の用途ではユーザーに単純操作で変形させてあげる必要がある) 3.OpenGL ・画像単体での読み書きができない (テクスチャマッピング機能を用いるか他のライブラリを併用する必要がある) ・平面ポリゴンを定義して、テクスチャマッピングをした場合、4の変形時にマッピング画像が追従するようにする必要がある 4.DXLib ・追加機能に対応する機能を持ってはいるが、そもそもCLIに対応していない 5.GDI+ ・CLI対応のサンプルが見つからない? (CLI以外のサンプルは多々見かけるのですが、ウインドウのハンドルやポインタの使い方が異なり、苦戦中) ・そもそも、説明しているサイトが少ない (私のような素人がみるとどれがGDI+の記述でどれが標準の機能なのか判らないものばかり  せめてGDI+のXXXを使用すると以下のソースになるみたいな説明がされているサイトがが有れば教えてください) 6.Direct2D ※まだ検証してません

  • XP Embeddedでアプリケーションを組込む方法

    Windows XP Embedded(以下,XPeとします)を読込み専用OSを作成したいです。 読込み専用にするのはEWFでできました。 ただ、いくつかのアプリケーションを組込む必要があります。 アプリケーションを組込み方法がまったく検討がつきません。参考図書や参考となるホームページがあったら教えてください。 EWFを実現しても、読込み専用と読み書きができるように切り替えられるという情報を聞いたのですが、どうすればいいのでしょうか? ちょっとした情報でもいいから、教えてください。助けてください。

  • 3次元座標上の2直線の交点判定について

    座標A(x1,y1,z1)から座標B(x2,y2,z2)への線分ABと 座標C(x3,y3,z3)から座標B(x4,y4,z4)への線分CDがあり、 線分ABと線分CDが交点を持つかどうかのプログラムを作りたいです。 C言語かVBかFortranで記述され、DirectXやOpenGLのライブラリを使わない方法の サンプルソースの載っているページを教えていただけませんか? また、ご迷惑でなければソースコードを記述していただけると助かります。

専門家に質問してみよう