[英]how to blur the image?
我需要实现图像模糊
为此,我必须使用矩阵形式的双精度数组,并实现以下内容:
我尝试用任务中的 1/9 数字创建并填充矩阵,但后来我不明白我应该乘以什么以及乘以什么?
有人解决了吗?
public static void main(String[] args) throws IOException {
BufferedImage image = ImageIO.read(new File("image.jpg"));
WritableRaster raster = image.getRaster();
int width = raster.getWidth();
int height = raster.getHeight();
final int colorsCountInRgb = 3;
final int colorMaximum = 255;
int[] pixel = new int[colorsCountInRgb];
double[][] matrix = new double[3][3];
double matrixMultiplier = 1 / 9d;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
matrix[i][j] = matrixMultiplier;
}
}
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
raster.getPixel(x, y, pixel);
raster.setPixel(x, y, pixel);
}
}
ImageIO.write(image, "png", new File("out.png"));
}
您可以使用平滑来模糊图像。 java程序如下:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class GFG {
public static void main(String[] args)
throws IOException, InterruptedException
{
Color color[];
File fin = new File("File Location"); // your file location here
BufferedImage input = ImageIO.read(fin);
BufferedImage output = new BufferedImage(
input.getWidth(), input.getHeight(),
BufferedImage.TYPE_INT_RGB);
int i = 0;
int max = 400, rad = 10;
int a1 = 0, r1 = 0, g1 = 0, b1 = 0;
color = new Color[max];
int x = 1, y = 1, x1, y1, ex = 5, d = 0;
for (x = rad; x < input.getHeight() - rad; x++) {
for (y = rad; y < input.getWidth() - rad; y++) {
for (x1 = x - rad; x1 < x + rad; x1++) {
for (y1 = y - rad; y1 < y + rad; y1++) {
color[i++] = new Color(
input.getRGB(y1, x1));
}
}
i = 0;
for (d = 0; d < max; d++) {
a1 = a1 + color[d].getAlpha();
}
a1 = a1 / (max);
for (d = 0; d < max; d++) {
r1 = r1 + color[d].getRed();
}
r1 = r1 / (max);
for (d = 0; d < max; d++) {
g1 = g1 + color[d].getGreen();
}
g1 = g1 / (max);
for (d = 0; d < max; d++) {
b1 = b1 + color[d].getBlue();
}
b1 = b1 / (max);
int sum1 = (a1 << 24) + (r1 << 16)
+ (g1 << 8) + b1;
output.setRGB(y, x, (int)(sum1));
}
}
ImageIO.write(
output, "jpeg", // file type here
new File("File location")); // your file location here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.