JPEGデータのサイズを変更したい – プログラミング – Home

JPEGデータのサイズを変更したい
 
通知
すべてクリア

[解決済] JPEGデータのサイズを変更したい


GOOO
 GOOO
(@GOOO)
ゲスト
結合: 17年前
投稿: 3
Topic starter  

読み込んだJPEGデータのサイズを変更して返すプログラムを作成しようとしています。

ですが、ヘッダの縦横のピクセル数を変えただけではサイズは変わっても
それに伴ってデータがずれてしまいうまく行きません。
サイズ情報を変えると同時にデータも変えないと駄目なのでしょうか?
またはやろうとしている事を既に実装しているAPI、関数などありますでしょうか?


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

開発環境がまったく書かれていませんので一般的な話だけします。

書かれている通り、ヘッダの情報はあくまでも中に格納されている画像情報の内容を
示している物なのですから画像情報とヘッダの内容が不一致になれば、表示が崩れるのは
理の当然と言う事になります。既に御自分で気がついている通り、中にある画像情報を
編集してそれにあわせてヘッダー情報を更新しないと期待した結果は得られないと
思います。
で、呼べばサイズを変えて保存してくれるようなAPIは多分無いと思います。
基本的には一旦プログラム上で扱いやすいビットマップ形式の情報にした後、
ビットマップを要件にあわせて編集する必要があるでしょう。
編集後のビットマップを再びJPEGで保存しなおせば、望み結果が得られるのでは
無いかと思います。
上記の処理をするために助けになってくれるライブラリにGDI+があります。
これを使うと比較的簡単にJPEGの画像が扱えるようになります。
但し、思いのままに処理するためにはそれなりに調査して使い方を覚えないと
駄目ですので、まずは御自分で調べて勉強してみる事ですね。
あと、基本的な画像データ(ビットマップ)の操作の方法については
最低限理解しておく必要があります。
ここが怪しいのであれば、まずは、ビットマップファイルを読み込んで
表示したり、拡大・縮小したりする方法を勉強しましょう。


返信引用
GOOO
 GOOO
(@GOOO)
ゲスト
結合: 17年前
投稿: 3
Topic starter  

回答ありがとうございます。

環境はVC++ 2005 MFCです。

コマンドラインか何かでJPEGのリサイズをしてくれる
プログラムありそうな気がしたのですがやはり難しそうですね。

GDI+を調べてみます。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

えーと、コマンドラインで動かすような物はAPIとか関数とは言いませんよ。
そういうプログラムが無いとは言いませんけれど、それはツールであって
APIとか関数その物ではないです。
内部では、恐らく私が書いたような事をやっていると思います。
画像の拡大・縮小の場合、Windowsの標準の関数では綺麗にできない場合があります。
この場合は、自前で拡大・縮尺のロジックを用意するか、ライブラリ等を探してくるか
しないと解決できないと思います。
グラフィックツールとかフォトレタッチツールなんかは大抵綺麗に処理するための
何らかの手段を講じていると思います。
もし自分で作るのが目的なのではなくて処理することが目的なのであれば、
ツールを探してきて処理した方が早いし確実だと思いますよ。
自分で作るとなると作ってまともに動くようにデバッグしてと相当な手間が掛かりますから。


返信引用
FUKU
 FUKU
(@FUKU)
ゲスト
結合: 17年前
投稿: 73
 

PATIOさんのおっしゃる通り、GDI+を使うと簡単です。

フラットAPIで実現するなら、
GdipLoadImageFromFile
GdipDrawImageRectI
GdipSaveImageToFile

この辺りで検索すればすぐ見つかるでしょう。


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

[JPEGデータのサイズを変更したい]
ってどういうことなんだろうか?

1:元画像も、サイズ変更に合わせて拡大縮小する
画像の拡縮にはいろいろ手法があるから、
どう変更するのかきめて、ちゃんと処理しないといけない

2:元画像部分はそのままで、キャンバスサイズを変えたい
縮小すれば元画像は削れるし、拡大すれば無地の部分ができる
その分、画像データを追加・削除しないとけない

ヘッダーの画像サイズだけ変えても画像をどうしたいのか誰もわからない


返信引用
GOOO
 GOOO
(@GOOO)
ゲスト
結合: 17年前
投稿: 3
Topic starter  

画像のサイズを変えたいとは画像を伸張したいという事です。

JPEGの書式が全くわからず、最初はヘッダ情報を変えれば自動的に縮尺されるものと考
えていました。
ですがそれでは無理との事でいろいろ行い結局外部ツール
「nconvert」を使用し解決しました。

但し自分のプログラムに取り込むのが理想ですので
GDIも引き続き調べてみます。

とりあえずやりたい事は実現できた為解決とします。
アドバイスありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました