通过保持不同屏幕分辨率的宽高比来计算图像大小 [英] Image size calculation by keeping aspect ratio with different screen resolutions

查看:145
本文介绍了通过保持不同屏幕分辨率的宽高比来计算图像大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过保持纵横比来调整图像大小。
它应该足够大以填充屏幕,没有空格,如果需要,一些图像应该在屏幕外。



下图显示如何根据黑屏大小调整黄色图像的大小。





继承我实际使用的代码,有没有更好的方法呢?

  if(bwidth> bheight){
if(bwidth> swidth&& bheight> sheight){
new_height = sheight;
new_width =(int)((double)(bwidth / 100)*(sheight /((double)(bheight)/ 100)));

}否则if(bwidth> swidth&& bheight< sheight){
new_height = sheight;
new_width =(int)((double)(bwidth / 100)*(sheight /((double)(bheight)/ 100)));

}否则if(bwidth< swidth&& bheight< sheight){
new_height = sheight;
new_width =(int)((double)(bwidth / 100)*(sheight /((double)(bheight)/ 100)));

}否则if(bwidth< swidth&& bheight> sheight){
new_height = sheight;
new_width =(int)((double)(bwidth / 100)*(sheight /((double)(bheight)/ 100)));

}否则if(bwidth> = swidth&& bheight> = sheight){
new_width = swidth;
new_height =(int)((double)(bheight / 100)*(swidth /((double)(bwidth)/ 100)));
}

}否则if(bwidth< bheight){
if(bwidth> swidth&& bheight> sheight){
new_width = swidth ;
new_height =(int)((double)(bheight / 100)*(swidth /((double)(bwidth)/ 100)));

}否则if(bwidth< swidth&& bheight> sheight){
new_width = swidth;
new_height =(int)((double)(bheight / 100)*(swidth /((double)(bwidth)/ 100)));

}否则if(bwidth< swidth&& bheight< sheight){
new_width = swidth;
new_height =(int)((double)(bheight / 100)*(swidth /((double)(bwidth)/ 100)));

}否则if(bwidth< swidth&& bheight< sheight){
new_width = swidth;
new_height =(int)((double)(bheight / 100)*(swidth /((double)(bwidth)/ 100)));

}否则if(bwidth> = swidth&& bheight> = sheight){
new_width = swidth;
new_height =(int)((double)(bheight / 100)*(swidth /((double)(bwidth)/ 100)));

}
}




  • swidth =屏幕宽度

  • sheight =屏幕高度

  • bwidth =图像宽度

  • bheight =图像高度


解决方案

非常感谢@Erick Robertson
改变了一点点,但现在它这是改变的代码:

  if(bwidth) / swidth< bheight / sheight){
new_width = swidth;
new_height =(int)Math.floor((double)bheight
*(double)swidth /(double)bwidth);
}其他{
new_height = sheight;
new_width =(int)Math.floor((double)bwidth
*(double)sheight /(double)bheight);
}


I am trying to resize an image by keeping the aspect ratio. It should be just large enough to fill the screen with no blank space and if necessary some of the image should be off-screen.

The image below shows how the yellow image should be sized based on the black screen size.

Heres the Code that I am actually using, is there any better way to do this?

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 = screen width
  • sheight = screen height
  • bwidth = image width
  • bheight = image height

解决方案

Well thank you @Erick Robertson Changed a litte bit, but now it works!

Here is the changed code:

if (bwidth / swidth <  bheight / sheight) {
    new_width = swidth;
    new_height = (int) Math.floor((double) bheight 
                                  * (double) swidth / (double) bwidth);
} else {
    new_height = sheight;
    new_width = (int) Math.floor((double) bwidth 
                                 * (double) sheight / (double) bheight);
}

这篇关于通过保持不同屏幕分辨率的宽高比来计算图像大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆