У меня есть метод, но я думаю, что это имеет немного сложности. Не волнуйтесь, я буду здесь, я постараюсь сделать это ясно для вас =)
1: Итак, в первую очередь вы должны создать объект BufferedImage
BufferedImage theImage = ImageIO.read(new File("pathOfTheImage.extension"));
2: Преобразование BuferedImage в массив int. Вы должны создать метод, чтобы сделать это для вас
public static int[] rasterize(BufferedImage img) {
int[] pixels = new int[img.getWidth() * img.getHeight()];
PixelGrabber grabber = new PixelGrabber(img, 0, 0, img.getWidth(),
img.getHeight(), pixels, 0, img.getWidth());
try {
grabber.grabPixels();
} catch (InterruptedException e) {
e.printStackTrace();
}
return pixels;
}
3: теперь у вас есть целое 1D массив, который содержит все пиксели как большое каскадное целое число, если вы хотите, чтобы манипулировать цвета отдельно, то вы должны создать еще 4 метода: getRed (int): int, getGreen (int): int, getBlue (int): int. эти три метода дают вам градиент каждого цвета (0 ~ 255). Последний метод makeRGB (int, int, int): int. Этот метод создает пиксели из компонента цветов RGB. Это ядро каждого метода ^^:
public static int getRed(int RGB) {
return (RGB >> 16) & 0xff;
}
public static int getGreen(int RGB) {
return (RGB >> 8) & 0xff;
}
public static int getBlue(int RGB) {
return RGB & 0xff;
}
public static int makeRGB(int red, int green, int blue) {
return ((red << 16) & 0xff) + ((green << 8) & 0xff) + (blue & 0xff);
}
4: Последнее, что нужно говорить о том, как превратить Int массив в BufferedImage снова. Это код, чтобы сделать это;)
public static BufferedImage arrayToBufferedImage(int[] array, int w, int h) {
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
WritableRaster raster = (WritableRaster) image.getData();
raster.setPixel(0, 0, array);
return image;
}
Я надеюсь, что поможет вам, Сала
Вы просто пытались сокращениями затем Upsizing изображения для получения эффекта размытия? Если не плохой пост, введите код. – Broak
У меня есть, и это работает отлично, но я хочу попробовать сделать несколько разных фильтров изображений, и первый шаг, похоже, состоит в том, чтобы узнать/понять, как сделать простой размытие таким образом. – Jacco