- ベストアンサー
CでJPEGファイルのサイズを変更したい
大きさが640×480のJPEGファイルを2つ読み込んで、それぞれを640×320ずつに削り、2つを上下にくっつけて1つのJPEGファイルを作成するプログラムをCで作ろうと思っています。 画像A (640×480) 画像B (640×480) 1. 画像Aの下側160ピクセルを削り、画像A'(640×320)を作る 2. 画像Bも同様に削り、画像B'を作る 3. 画像A'と画像B'を縦にくっつけて画像C(640×640)を作る 調べたところ、JPEGからビットマップにして、加工してからJPEGに戻せば出来そうなのですが、他に方法はないでしょうか。また、この方法だとビットマップからJPEGに戻す時に劣化したりしないでしょうか。 沢山のファイルを一括で処理したいので、画像処理ソフトを使わずにパパっとやってしまいたいです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>調べたところ、JPEGからビットマップにして、加工してからJPEGに戻せば出来そうなのですが、他に方法はないでしょうか。 あります。 が、あまりお勧めしません。 これをやるにはjpegの圧縮の仕組みをきちんと理解する必要があり、非常に大変です。 また、この場合2つの制限が付きます。 1つは、切り取りのサイズが16ドット単位(場合によっては8ドット単位)でないといけないということ。もう1つは、2つの画像が同じ圧縮率である必要があることです。 これによってかなり汎用性の低いプログラムになってしまいます。 それでも作るというなら、以下の理解が必要です。 ・jpegの内部構造 ・ハフマン圧縮 ・ファイルをビットごとに扱う処理
その他の回答 (1)
- arain
- ベストアンサー率27% (292/1049)
>調べたところ、JPEGからビットマップにして、加工してからJPEGに戻せば出来そうなのですが、他に方法はないでしょうか。 ありません。 JPEGは、画像ファイルをあるアルゴリズム(内容は省略)でデータサイズを減らしています。 つまり、そのままのデータでは編集しようがありません。 (厳密に書けば、ヘッダ部なども含んでいるので、ファイルがそのまま画像データではないし) >また、この方法だとビットマップからJPEGに戻す時に劣化したりしないでしょうか。 JPEGにするのですから、当然劣化します。
お礼
お返事が遅れて本当に申し訳ございません。 劣化覚悟でこの方法でやってみようと思います。 ご回答ありがとうございました。
お礼
お返事が遅れて本当に申し訳ございません。 JPGは身近な割りにかなり複雑なんですね。今の方法でやってみようと思います。 ご回答ありがとうございました。