【问题标题】:Scaling RGB values in Pi在 Pi 中缩放 RGB 值
【发布时间】:2012-03-19 02:30:03
【问题描述】:

因此,为了获得数学课的额外学分,我正在编写一个程序来可视化 pi。每 6 位数字转换为十六进制颜色。

但是,当我尝试缩放颜色时遇到错误(因为 r、g 和 b 各有 2 位数字,我只能达到 99,而我想达到 255)。我遍历几千位 pi 并在每组 6 上运行此缩放函数,然后将其写入 BufferedImage 中的一个像素,但我不断收到 StringIndexOutOfBoundsException。当我尝试设置 retArray[i+1] = subArray[0] 时,我得到了同样的错误,但这次是在第 5 行。知道发生了什么吗?

    private String scale(int org){
    tmp = Integer.toString(org);
    retArray = new char[6];
    for(int i=0; i<=4; i+=2){
        tmpsub = tmp.substring(i, i+2);             //line 5
        int2 = Integer.parseInt(tmpsub);
        tmpint = (((float)(int2)/99)*255);
        intie = (int)(tmpint);
        tmpsub = Integer.toHexString(intie);
        subArray = tmpsub.toCharArray();
        retArray[i] = subArray[0];
        retArray[i+1] = subArray[1];      //String Index Exception on this line
    }
    retString = "";
    for(int i=0; i<retArray.length; i++)
        retString+=retArray[i];
    return retString;
}

非常感谢您对这个问题的任何帮助。希望这是我看不到的明显的东西。

【问题讨论】:

  • 我猜......虽然它仍然运行良好,但只运行了大约 100 次左右而不是几乎 10000 次。它在中途出现错误。 . 完成一堆之后。
  • 啊,我想我正在做某事。当我只告诉它通过 10 组时,它并没有给我一个错误。然后我尝试在它处理的任何字符串中搜索数字 0,但没有。我想如果我有类似 05 的东西,它会用 5 替换它并使十六进制字符串的长度为 1。
  • 另见PiRaster

标签: java image hex pi


【解决方案1】:

问题在于 Integer.toHexString()。

如果你给它一个小于 0x10(十进制为 16)的值,你会得到一个长度为 1 的字符串,然后 subArray[1] 会抛出异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2020-04-23
    • 2020-06-09
    • 2013-06-19
    • 2014-10-04
    • 2020-08-07
    相关资源
    最近更新 更多