【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

 お世話になっております。

 ImageMagickで
横幅のピクセルのみを指定して
元の画像と縦横比を維持してサイズ変更したい

 さらにImageMagickで横幅のピクセルのみを指定して
元の画像と縦横比を維持した
サイズ変更後の縦幅のピクセルが何ドットか
も取得したいのですが

 よいコードの書き方はないでしょうか?
Perl ImageMagick 数学に詳しい方、よろしくお願いいたします。

A 回答 (1件)

よいコードというのは敷居が高いのですが、これで参考にはならないでしょうか?


## 画像リサイズ

## 画像の処理
my $gazo = Image::Magick->new();
$gazo->Read('画像ファイル名');

## 画像サイズ取得
my ($w1,$h1) = $gazo->Get('columns','height'); # イメージの幅と高さ

## 画像の縦横の最大サイズ
my $w = 400;
my $h = 300;

## 画像の縦長・横長判定
if(($w1 * 0.75) > $h1){
## 幅が大きい場合
if($w1 > $w){
$h = int(($w / $w1) * $h1);## 高さ算出
$gazo->Resize(width => $w, height => $h);
}
}else{
## 高さが大きい場合
if($h1 > $h){
$w = int(($h / $h1) * $w1);## 幅算出
$gazo->Resize(width => $w, height => $h);
}
}

## 通常画像出力
$gazo->Profile();
$gazo->Write('出力ファイル名');

この回答への補足

 すいません、「横幅だけ指定」としてしまいましたが
極端に縦幅が長い画像ファイルもアップロードされることが
ありうるため縦横それぞれの最大幅を指定したほうがよさそうです。

 たとえばサイズ変更後の
最大横幅
最大縦幅
をあらかじめ決めておいて
元のサイズの
横幅
縦幅
とそれぞれ比較して計算、元画像の
横幅
縦幅

変更後の
最大横幅
最大縦幅
との比率をパーセンテージで求め
その計算結果から縦横それぞれ収まりきるサイズ変更率を決定し
そのサイズ変更率の(当然ながら)少ないほうを(元の画像と縦横比を維持した)最終的なサイズ変更率として
決定する、みたいな方法はございませんでしょうか?
つまり75%のような決め打ちでなく計算でサイズ変更率を算出できませんでしょうか?

みなさま、そんなに敷居高く感じなくてもよいので
どなたか、よろしくお願いいたします。

補足日時:2006/10/29 00:56
    • good
    • 0
この回答へのお礼

 補足の方向でコードを書こうかと思います。
「教えて!gooサービス」利用規約第14条の4項の規定により投稿内容の著作権(プログラムのバイナリ、ソースコードも)がNTTレゾナントに帰属してしまうため教えて!gooには掲載しません。

お礼日時:2006/10/31 06:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!