• ベストアンサー

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に戻す時に劣化したりしないでしょうか。 沢山のファイルを一括で処理したいので、画像処理ソフトを使わずにパパっとやってしまいたいです。 よろしくお願いします。

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

  • ベストアンサー
回答No.2

>調べたところ、JPEGからビットマップにして、加工してからJPEGに戻せば出来そうなのですが、他に方法はないでしょうか。 あります。 が、あまりお勧めしません。 これをやるにはjpegの圧縮の仕組みをきちんと理解する必要があり、非常に大変です。 また、この場合2つの制限が付きます。 1つは、切り取りのサイズが16ドット単位(場合によっては8ドット単位)でないといけないということ。もう1つは、2つの画像が同じ圧縮率である必要があることです。 これによってかなり汎用性の低いプログラムになってしまいます。 それでも作るというなら、以下の理解が必要です。 ・jpegの内部構造 ・ハフマン圧縮 ・ファイルをビットごとに扱う処理

xdp33829
質問者

お礼

お返事が遅れて本当に申し訳ございません。 JPGは身近な割りにかなり複雑なんですね。今の方法でやってみようと思います。 ご回答ありがとうございました。

その他の回答 (1)

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

>調べたところ、JPEGからビットマップにして、加工してからJPEGに戻せば出来そうなのですが、他に方法はないでしょうか。 ありません。 JPEGは、画像ファイルをあるアルゴリズム(内容は省略)でデータサイズを減らしています。 つまり、そのままのデータでは編集しようがありません。 (厳密に書けば、ヘッダ部なども含んでいるので、ファイルがそのまま画像データではないし) >また、この方法だとビットマップからJPEGに戻す時に劣化したりしないでしょうか。 JPEGにするのですから、当然劣化します。

xdp33829
質問者

お礼

お返事が遅れて本当に申し訳ございません。 劣化覚悟でこの方法でやってみようと思います。 ご回答ありがとうございました。

関連するQ&A

専門家に質問してみよう