Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 BuffereImage resize的行为:像素行需要最小值,而不是平均值_Java_User Interface_Image Processing_Bufferedimage - Fatal编程技术网

如何指定Java BuffereImage resize的行为:像素行需要最小值,而不是平均值

如何指定Java BuffereImage resize的行为:像素行需要最小值,而不是平均值,java,user-interface,image-processing,bufferedimage,Java,User Interface,Image Processing,Bufferedimage,我想调整Java BuffereImage的大小,使其垂直变小,但不使用任何类型的平均值,这样,如果源图像中的像素行为“空白”(白色),则在目标图像的相应位置将有一个白色像素行:“min”操作。默认算法(在中指定)不允许进行足够细粒度的控制。我想实现以下逻辑: for each pixel row in the w-pixels wide destination image, d = pixel[w] find the corresponding j pixel rows of the s

我想调整Java BuffereImage的大小,使其垂直变小,但不使用任何类型的平均值,这样,如果源图像中的像素行为“空白”(白色),则在目标图像的相应位置将有一个白色像素行:“min”操作。默认算法(在中指定)不允许进行足够细粒度的控制。我想实现以下逻辑:

for each pixel row in the w-pixels wide destination image, d = pixel[w]
   find the corresponding j pixel rows of the source image, s[][] = pixel[j][w]
   write the new line of pixels, so that d[i] = min(s[j][i]) over all j, i

我一直在读,但还没有弄明白如何实现这个功能——这是一种奇怪的缩放方式。有人能给我指点怎么做吗?在更糟糕的情况下,我想我可以保留目标ImageBuffer并复制伪代码后面的像素,但我想知道是否有更好的方法。

重新缩放方法包括一个名为renderingHights的参数。有一个名为
KEY\u INTERPOLATION
的提示,决定缩放图像时要使用的颜色

如果将值
value\u INTERPOLATION\u NEAREST\u NEIGHBOR
用于键插值,Java将使用原始颜色,而不是使用某种类型的算法来重新计算新颜色

所以,不是白线变成灰色或者混合颜色,你要么得到白线,要么根本得不到任何线条。这完全取决于比例因子,以及它是偶数行还是奇数行。例如,如果按一半比例缩放,则每个1像素水平线在新图像中的显示至少有50%的变化。但是,如果白线的高度为两个像素,则出现白线的概率为100%

除了编写自己的缩放方法外,这可能是最接近的方法。不幸的是,我看不到任何其他可能有进一步帮助的提示


要实现您自己的缩放方法,您可以创建一个实现
BufferedImageOp
接口的新类,并实现
filter()
方法。在BuffereImage对象上使用
getRGB()
setRGB()
从原始图像获取像素,并在新图像上设置像素。

重新缩放方法包括一个名为RenderingHits的参数。有一个名为
KEY\u INTERPOLATION
的提示,决定缩放图像时要使用的颜色

如果将值
value\u INTERPOLATION\u NEAREST\u NEIGHBOR
用于键插值,Java将使用原始颜色,而不是使用某种类型的算法来重新计算新颜色

所以,不是白线变成灰色或者混合颜色,你要么得到白线,要么根本得不到任何线条。这完全取决于比例因子,以及它是偶数行还是奇数行。例如,如果按一半比例缩放,则每个1像素水平线在新图像中的显示至少有50%的变化。但是,如果白线的高度为两个像素,则出现白线的概率为100%

除了编写自己的缩放方法外,这可能是最接近的方法。不幸的是,我看不到任何其他可能有进一步帮助的提示


要实现您自己的缩放方法,您可以创建一个实现
BufferedImageOp
接口的新类,并实现
filter()
方法。在BuffereImage对象上使用
getRGB()
setRGB()
从原始图像获取像素,并在新图像上设置像素。

你可能是对的-我认为没有比实现我自己的BuffereImage更好的方法了。谢谢你可能是对的——我认为没有比实现我自己的BufferedImageOp更好的方法了。谢谢