2016-11-18 9 views
0

画像2 画像1および画像2があります。別の画像サイズに基づいて画像をスケーリングし、そのアスペクト比を維持するアルゴリズム

画像1のサイズは512(横)×515(高さ)です。

次に画像2のサイズは256(幅)x 256(高さ)です。

画像2透かしとして使用されていると画像1の上に配置されます。

私が望む画像2のサイズは、の画像1に依存する必要があります。 画像2は、サイズに応じてサイズを変更することができます。画像1

新しいサイズ画像2の(幅&高さ)%の画像1の大きさと、同時に、その縦横比を維持すべきです。

新しいサイズ(幅&の高さ)を見つけるアルゴリズムはです。画像2

現在、(20%/100) * 512を使用してサイズを変更していますが、これは画像2の縦横比を保持しません。

+0

領域ごとに20%、または軸の1つを移動し、もう一方の軸はアスペクト比を維持するためにサイズを変更しますか? – samgak

+0

@samgak画像1の幅と高さが20%小さい。私はこの部分をすることができます。問題は今私がスケーリングの後で同じ長さにしたいアスペクト比です。 – Programmer

答えて

2

2つの画像のアスペクト比が同じでない場合、幅と高さの両方を20%にスケーリングしてアスペクト比を維持することは数学的に不可能です。

したがって、拡大縮小に使用する軸を選択し、もう一方を縦横比を維持するサイズに拡大縮小します。その後

new_image1_width = 512 * (20/100) = 102.4 

アスペクト比維持するために新しい高さを計算します:

original_aspect_ratio = image2_width/image2_height = 256/256 = 1 
new_image1_height = 102.4/original_aspect_ratio = 102.4 

するか、それを他の方法(この時間は比を掛ける)を実行します。

を幅を使用して

例えば、

new_image1_height = 515 * (20/100) = 103 
original_aspect_ratio = image2_width/image2_height = 256/256 = 1 
new_image1_width = 103 * original_aspect_ratio = 103 

任意の画像サイズと任意のスケール係数を処理する必要がある場合は、2つルールの目的に応じて2つの方法を切り替えます。例えば。画像1の高さよりも大きな高さを与えない場合は、比率調整された高さを使用してください。その場合は、2番目の方法を使用するか、逆もあります。

+0

申し訳ありませんが、イメージのサイズが512 * 512でなく512 * 512であることに気付かなかった。回答を編集しました – samgak

+0

私はこれを試していて、分単位でお知らせします – Programmer

+0

2番目の画像は最初の画像の前に置かれる透かし画像です。それはちょうど何%も小さくなければならず、最初の画像の右上に配置されます。実際、誰も画像のサイズを知っているわけではありません。この質問で見られる数字は単なる例です。自動リスケールのものとその割合を維持することは、私が苦労していることです。サイズの変更された画像が元の画像と大きく異なっていないことを確認したいだけです。 – Programmer

関連する問題