我有一张图片并尝试在其下创建相同的图片(复制它)。 这意味着,如果我有100 * 100大小的照片,我想改变它的大小 100 * 200然后我把它写在另一个图像文件中。 这是我不知道如何制作输出文件高度的问题 正是我想写的尺寸。 请帮我处理这种情况! 谢谢。 我的代码在这里,我试图复制:
public void duplicateImage() throws IOException {
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
int pixel = image.getRGB(i, j);
int alpha = (pixel & 0x0000ff00) >> 24;
int red = (pixel & 0x00ff0000) >> 16;
int green = (pixel & 0x0000ff00) >> 8;
int blue = (pixel & 0x000000ff);
int mid = (red + green + blue) / 3;
red = blue = green = mid;
int newPixel = alpha;
newPixel = (newPixel << 8) + red;
newPixel = (newPixel << 8) + green;
newPixel = (newPixel << 8) + blue;
image.setRGB(i, j, newPixel);
image.setRGB(i+width,j+height,newPixel);
}
}
}
答案 0 :(得分:1)
我找到了一种使用BufferedImage来改变照片大小的方法。 这很简单,我分享它,所以其他人也可以理解它。 https://docs.oracle.com/javase/7/docs/api/java/awt/Image.html#getScaledInstance(int,%20int,%20int)是顺便处理的好方法。 这是我的答案:
public void duplicateImage(File inFile,File outFile) throws IOException {
BufferedImage img = new BufferedImage(width,2*height,BufferedImage.TYPE_3BYTE_BGR);
BufferedImage image = ImageIO.read(inFile)
for (int i = 0; i < width; i++) {
for (int j = 0; j < 2*height; j++) {
int pixel = image.getRGB(i, j%height);
img.setRGB(i, j, pixel);
}
}
ImageIO.write(img,"jpg",outFile);
}