反映图像

时间:2015-11-25 02:02:48

标签: java image image-processing

这是我的计算机科学课程的一部分。其中一项任务是拍摄图像并进行反映。我已经初始化了一张名为image的图片。当我运行这种方法时,不是反映它反映的图像。

 /**
 * Removes invalid characters from an HTML string
 *
 * @param string $content
 *
 * @return string
 */
function sanitize_html($content) {
  if (!$content) return '';
  $invalid_characters = '/[^\x9\xa\x20-\xD7FF\xE000-\xFFFD]/';
  return preg_replace($invalid_characters, '', $content);
}

1 个答案:

答案 0 :(得分:0)

您必须交换相应的像素值。目前,您将覆盖图像的右半部分,然后将其像素值保存在参考中,以便将它们放在左半部分。

下面我说明了我的意思"交换"值而不是单向分配它们:

//Getting a pixel object for the given x and y value
Pixel pixelObj = image.getPixel(x, y);
Pixel oppositePixel = image.getPixel(image.getWidth()-x-1, y);
//Store the RGB values of the opposite pixel temporarily
int redValue = oppositePixel.getRed();
int greenValue = oppositePixel.getGreen();
int blueValue = oppositePixel.getBlue();
//This swaps the color values of the new pixel to the ones of the old pixel
oppositePixel.setRed(pixel0bj.getRed());
oppositePixel.setGreen(pixel0bj.getGreen());
oppositePixel.setBlue(pixel0bj.getBlue());
pixelObj.setRed(redValue);
pixelObj.setGreen(greenValue);
pixelObj.setBlue(blueValue);

如果您在每轮中双向交换像素,则从0循环到image.getWidth() / 2就足够了。

了解如何在ImageJ's ImageProcessor class中完成此操作。

另一种解决方案是使用矩阵变换并在x方向上按-1缩放。有关使用scale op进行Java中图像处理的更详细示例,请参阅ImageJ ImgLib2 library