C++を勉強していて、謎な事があって質問します。
C/C++で画像を扱う場合、Windowsなら標準でJpegなどは扱える関数があると思うのですが、その他のrawなどの標準で扱えないファイルはライブラリを使うと思います。
そのライブラリなんですが、扱えないファイルを扱えるようにする事を可能にしている訳ですよね?
どういう仕組でプログラムが書かれているんですか?
回答4件
あなたの回答
tips
プレビュー
C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。
あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。
Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。
MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。
C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。
あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。
Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。
MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。
C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
0グッド
0クリップ
投稿2017/06/27 09:43
C++を勉強していて、謎な事があって質問します。
C/C++で画像を扱う場合、Windowsなら標準でJpegなどは扱える関数があると思うのですが、その他のrawなどの標準で扱えないファイルはライブラリを使うと思います。
そのライブラリなんですが、扱えないファイルを扱えるようにする事を可能にしている訳ですよね?
どういう仕組でプログラムが書かれているんですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
画像ファイルといっても、その中身は他のファイル同様バイト列で、フォーマットによって何バイト目は画像のサイズ、何バイト目は圧縮方式、何バイト目以降は各ピクセルの色...といった具合に様式が定められております。画像入出力ライブラリはファイルから読み取られたバイト列をそれら様式に従って解釈しているわけです。
ですので、これといって特別なことをしているわけではありませんので、ファイルの様式に関する情報を入手すれば質問者さんご自身で画像ファイル読み込み関数や書き出し関数を作ることも可能かと思います。
投稿2017/06/27 09:56
総合スコア10807
0
JPEG ファイルの中身がどのようになっているか調べてみてはどうでしょうか?
投稿2017/06/27 09:48
総合スコア1046
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/27 10:03
2017/06/27 10:31
2017/06/28 13:08
2017/06/28 13:11
0
rawなどの標準で扱えないファイルはライブラリを使うと思います。
RAW画像の形式は標準化されてないとしてもなんらかの仕様はあります。仕様がないなら実装は不可能なのですから。ライブラリーはその仕様に基づいて実装されているだけです。仕様がどうなっているかについては公開されている情報ならば探せば見つかると思います。
例えばwikiのページなどを参照すればどのような仕組みなのかの一端は伺えると思います。
投稿2017/06/27 10:09
総合スコア18394
0
こんにちは。
「標準では扱えない画像ファイル」をデコードしてビットマップ形式へ変換したり、ビットマップ形式から「標準では扱えない画像ファイル」へエンコードするプログラムを開発することは、当たり前ですが可能です。(それができなければ、そもそも「標準では扱えない画像ファイル」は何の役にも立ちません。単なる絵に書いた餅です。)
そのようなプログラムをC++から呼び出せるようにしたものが、「標準では扱えない画像ファイル」を扱えるようにするためのライブラリです。
libtiffやlibpng等、様々なフォーマットの様々なエンコード方式の特定の組み合わせをサボートしたライブラリがたくさんあります。
1つ使ってみると、その仕組がよく解りますよ。
私はlibtiffくらいしか使ったことありませんがlibtiffは簡単でした。もっと簡単なものもあるかも知れませんが、ビットマップ形式についての知識があれば十分候補になると思います。
投稿2017/06/27 09:59
総合スコア23272
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/27 09:59
2017/06/27 10:16
2017/06/27 10:39
2017/06/27 10:49
2017/06/27 10:52
2017/06/27 11:21
2017/06/27 11:31