Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将给定像素长度转换为宽度和高度的程序_Java_Image_Pixel - Fatal编程技术网

Java 将给定像素长度转换为宽度和高度的程序

Java 将给定像素长度转换为宽度和高度的程序,java,image,pixel,Java,Image,Pixel,我有一个以像素(图像像素)为单位的输入,比如24像素,我的问题是将它们转换为缓冲图像的宽度和高度,对于输入24,我不能只使用1高x 24宽,它将变得太长,这意味着输出应该像6宽x 4高,其中有24个像素。在java中可以这样做吗?我想我已经正确地解释了我的问题… < P>蛮力:从中间开始(在平方根),然后从那里尝试,直到找到一个有效的分裂,使用 %< /代码>余数运算符。< /P> static int optimumHeight(int areaSize) { if (areaSize

我有一个以像素(图像像素)为单位的输入,比如24像素,我的问题是将它们转换为缓冲图像的宽度和高度,对于输入24,我不能只使用1高x 24宽,它将变得太长,这意味着输出应该像6宽x 4高,其中有24个像素。在java中可以这样做吗?我想我已经正确地解释了我的问题…

< P>蛮力:从中间开始(在平方根),然后从那里尝试,直到找到一个有效的分裂,使用<代码> %< /代码>余数运算符。< /P>
static int optimumHeight(int areaSize) {
    if (areaSize <= 0)
        throw new IllegalArgumentException("areaSize must be positive: " + areaSize);
    for (int h = (int) Math.sqrt(areaSize); h > 1; h--)
        if (areaSize % h == 0)
            return h;
    return 1;
}

更新

areaSize
是素数时,结果总是
areaSize x 1H
。一条注释(现已删除)要求更改为使用一个较大的
areaSize

静态整数最佳高度(整数区域大小){
如果(区域大小2;h--)
如果(altSize%h==0)
返回h;
返回2;
}
宽度
计算需要调整为四舍五入,因此它变为:

int-width=(区域大小+高度-1)/高度;
例子

1->1Wx1H
2->2Wx1H
3->2Wx2H
4->2Wx2H
5->3Wx2H
6->3Wx2H
7->4Wx2H
8->4Wx2H
9->3Wx3H
10->5Wx2H
11->4Wx3H
12->4Wx3H
13->7Wx2H
14->7Wx2H
15->5Wx3H
16->4Wx4H
17->6Wx3H
18->6Wx3H
19->5Wx4H
20->5Wx4H
21->7Wx3H
22->11Wx2H
23->6Wx4H
24->6Wx4H
25->5Wx5H
26->13Wx2H
27->9Wx3H
28->7Wx4H
29->6Wx5H

< /代码>

蛮力:从中间开始(在平方根),然后从那里尝试,直到找到一个有效的拆分,使用<代码> %<代码>余数运算符。< /P>

static int optimumHeight(int areaSize) {
    if (areaSize <= 0)
        throw new IllegalArgumentException("areaSize must be positive: " + areaSize);
    for (int h = (int) Math.sqrt(areaSize); h > 1; h--)
        if (areaSize % h == 0)
            return h;
    return 1;
}

更新

areaSize
是素数时,结果总是
areaSize x 1H
。一条注释(现已删除)要求更改为使用一个较大的
areaSize

静态整数最佳高度(整数区域大小){
如果(区域大小2;h--)
如果(altSize%h==0)
返回h;
返回2;
}
宽度
计算需要调整为四舍五入,因此它变为:

int-width=(区域大小+高度-1)/高度;
例子

1->1Wx1H
2->2Wx1H
3->2Wx2H
4->2Wx2H
5->3Wx2H
6->3Wx2H
7->4Wx2H
8->4Wx2H
9->3Wx3H
10->5Wx2H
11->4Wx3H
12->4Wx3H
13->7Wx2H
14->7Wx2H
15->5Wx3H
16->4Wx4H
17->6Wx3H
18->6Wx3H
19->5Wx4H
20->5Wx4H
21->7Wx3H
22->11Wx2H
23->6Wx4H
24->6Wx4H
25->5Wx5H
26->13Wx2H
27->9Wx3H
28->7Wx4H
29->6Wx5H

好的,24像素!=1Hx24W,但为什么特别是6Wx4H?为什么不呢,比如说3Wx8H?任何东西都可以计算,如果你知道(并且可以解释)要计算什么…好的,24像素!=1Hx24W,但为什么特别是6Wx4H?为什么不呢,比如说3Wx8H?任何东西都可以计算,如果你知道(并且可以解释)什么是要计算的…对不起,我是说30,这是一个打字错误,我不确定我是否理解这一点。仅仅因为你有24个像素,并不意味着它是一个6x4的图像。它可能是4x6、3x8、8x3或12x2或其他东西,所以它看起来仍然是错误的,肯定吗?@MarkSetchell也许你应该在问题中指出这一点。这是对这个问题的回答。OP想对结果做什么取决于OP。--事实上,凯文·安德森已经做到了,所以…对不起,我是说30,这是一个打字错误,我不确定我是否理解。仅仅因为你有24个像素,并不意味着它是一个6x4的图像。它可能是4x6、3x8、8x3或12x2或其他东西,所以它看起来仍然是错误的,肯定吗?@MarkSetchell也许你应该在问题中指出这一点。这是对这个问题的回答。OP想对结果做什么取决于OP。--事实上,凯文·安德森已经做到了,所以。。。