質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

2232閲覧

C/C++のライブラリについて

ryohasegawa

総合スコア437

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/06/27 09:43

C++を勉強していて、謎な事があって質問します。
C/C++で画像を扱う場合、Windowsなら標準でJpegなどは扱える関数があると思うのですが、その他のrawなどの標準で扱えないファイルはライブラリを使うと思います。
そのライブラリなんですが、扱えないファイルを扱えるようにする事を可能にしている訳ですよね?
どういう仕組でプログラムが書かれているんですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

画像ファイルといっても、その中身は他のファイル同様バイト列で、フォーマットによって何バイト目は画像のサイズ、何バイト目は圧縮方式、何バイト目以降は各ピクセルの色...といった具合に様式が定められております。画像入出力ライブラリはファイルから読み取られたバイト列をそれら様式に従って解釈しているわけです。
ですので、これといって特別なことをしているわけではありませんので、ファイルの様式に関する情報を入手すれば質問者さんご自身で画像ファイル読み込み関数や書き出し関数を作ることも可能かと思います。

投稿2017/06/27 09:56

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/06/27 09:59

それでは、動画なら最近のフォーマットである、h265などもバイト情報さえ入手すれば、作れるという事ですか?
Bongo

2017/06/27 10:16

複雑なフォーマットは仕様もやたら難解だったりしますが、作れないわけではないでしょう。ただ、よほどマイナーなフォーマットであるとか、仕様が非公開だけれど解析して中身を見てみたい、とかでない限りは、何かしらファイルを扱うためのライブラリは入手可能かと思いますので、学習目的や既存のライブラリ以上の性能のライブラリを作りたいなどの目的以外では、それらを使った方が信頼性や効率面でおすすめかと思います。
ryohasegawa

2017/06/27 10:39

話それるかもしれませんが、会社(ゲームなど)で、音声や、ビデオを独自ファイルで保管してあると思いますが、それもこのバイトなどを工夫して、作ってあるという事ですか?
Bongo

2017/06/27 10:49

そういうことですね。それこそまさに、外部の者には中身を触らせる必要のない、仕様非公開のファイルということになるでしょう。 標準的な形式を使わない理由の中には、そのゲーム等で取り扱う上でより便利にしたい(複数の関連するデータをひとまとめに格納したいなど)とか、読み込み速度を上げるためにあえて独自形式を使いたい、といったものもあるかもしれません。
ryohasegawa

2017/06/27 10:52

「速度を上げるためにあえて独自形式」 独自形式にすると読み込み速度が早くなるのですか? プログラムの書き方によって変わってくると思いますが・・・
Bongo

2017/06/27 11:21

あまり深く考えずに書いてしまいましたが、たとえば「この形式がこのゲームで扱うには便利だが、サイズが多少大きくなるものの、圧縮方式をこちらに変更すればより高速に展開でき、ロード時間を短縮できる」などの理由で既存の形式をベースに独自形式を作る...なんてこともあるのではないでしょうか?本職のゲームプログラマの方ならもっと実際の現場のやり方に即したお話ができるのかもしれません。申し訳ないです...
ryohasegawa

2017/06/27 11:31

いえいえ、新しい知識が増えました。 ありがとうございます。
guest

0

JPEG ファイルの中身がどのようになっているか調べてみてはどうでしょうか?

投稿2017/06/27 09:48

mugicya

総合スコア1046

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/06/27 10:03

JPEG ファイルの中身がどのようになっているかを知りたい訳ではなく、どのような事をしているのかと言うことが知りたく答えになっていないと思います。
maisumakun

2017/06/27 10:31

ファイル構造がわかれば、「それを処理するプログラム」を書くだけです。
mugicya

2017/06/28 13:08

意図が伝わらなかったようだ。
ryohasegawa

2017/06/28 13:11

意図といいますと?
guest

0

rawなどの標準で扱えないファイルはライブラリを使うと思います。

RAW画像の形式は標準化されてないとしてもなんらかの仕様はあります。仕様がないなら実装は不可能なのですから。ライブラリーはその仕様に基づいて実装されているだけです。仕様がどうなっているかについては公開されている情報ならば探せば見つかると思います。

例えばwikiのページなどを参照すればどのような仕組みなのかの一端は伺えると思います。

投稿2017/06/27 10:09

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/06/27 10:52

なるほど、ありがとうございます。
guest

0

こんにちは。

「標準では扱えない画像ファイル」をデコードしてビットマップ形式へ変換したり、ビットマップ形式から「標準では扱えない画像ファイル」へエンコードするプログラムを開発することは、当たり前ですが可能です。(それができなければ、そもそも「標準では扱えない画像ファイル」は何の役にも立ちません。単なる絵に書いた餅です。)

そのようなプログラムをC++から呼び出せるようにしたものが、「標準では扱えない画像ファイル」を扱えるようにするためのライブラリです。

libtifflibpng等、様々なフォーマットの様々なエンコード方式の特定の組み合わせをサボートしたライブラリがたくさんあります。
1つ使ってみると、その仕組がよく解りますよ。

私はlibtiffくらいしか使ったことありませんがlibtiffは簡単でした。もっと簡単なものもあるかも知れませんが、ビットマップ形式についての知識があれば十分候補になると思います。

投稿2017/06/27 09:59

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/06/27 10:01

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問