アスペクト比を維持して画像のサイズを変更しようとしています。画面を空白なしで埋めるのに十分な大きさである必要があり、必要に応じて画像の一部を画面外に表示する必要があります。
下の画像は、黒い画面サイズに基づいて黄色の画像のサイズを設定する方法を示しています。
これが私が実際に使用しているコードですが、これを行うためのより良い方法はありますか?
if(bwidth > bheight) {
if(bwidth > swidth && bheight > sheight) {
new_height = sheight;
new_width = (int) ((double) (bwidth/100)*(sheight/((double) (bheight)/100)));
} else if(bwidth > swidth && bheight < sheight) {
new_height = sheight;
new_width = (int) ((double) (bwidth/100)*(sheight/((double) (bheight)/100)));
} else if(bwidth < swidth && bheight < sheight) {
new_height = sheight;
new_width = (int) ((double) (bwidth/100)*(sheight/((double) (bheight)/100)));
} else if(bwidth < swidth && bheight > sheight) {
new_height = sheight;
new_width = (int) ((double) (bwidth/100)*(sheight/((double) (bheight)/100)));
} else if(bwidth >= swidth && bheight >= sheight) {
new_width = swidth;
new_height = (int) ((double) (bheight/100)*(swidth/((double) (bwidth)/100)));
}
} else if(bwidth < bheight) {
if(bwidth > swidth && bheight > sheight) {
new_width = swidth;
new_height = (int) ((double) (bheight/100)*(swidth/((double) (bwidth)/100)));
} else if(bwidth < swidth && bheight > sheight) {
new_width = swidth;
new_height = (int) ((double) (bheight/100)*(swidth/((double) (bwidth)/100)));
} else if(bwidth < swidth && bheight < sheight) {
new_width = swidth;
new_height = (int) ((double) (bheight/100)*(swidth/((double) (bwidth)/100)));
} else if(bwidth < swidth && bheight < sheight) {
new_width = swidth;
new_height = (int) ((double) (bheight/100)*(swidth/((double) (bwidth)/100)));
} else if(bwidth >= swidth && bheight >= sheight) {
new_width = swidth;
new_height = (int) ((double) (bheight/100)*(swidth/((double) (bwidth)/100)));
}
}
- swidth=画面幅
- sheight=画面の高さ
- bwidth=画像の幅
- bheight=画像の高さ