java - 为什么跟随 Java 代码的行为就像一个重复循环?
问题描述
我试图将图像绘制到自身上一次。但它的行为有点像循环,图像被一遍又一遍地绘制了很多次。为什么它表现得像一个循环?
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.awt.Graphics;
public class Swapper{
public static void main(String[] args) throws
IOException {
try{
BufferedImage img = ImageIO.read(new File("picture2.jpg"));
Graphics g = img.getGraphics();
g.drawImage(img,100,100, null);
File file = new File("aaaimage3.png");
ImageIO.write(img,"png", file);
}
catch(IOException e){}
}
}
例如,使用此输入:
你得到这个输出:
解决方案
您正在从自身和自身绘制图像。这意味着图像在被复制时正在被修改,并且由于它一次复制一个部分,因此会产生这种效果。
例如,假设您尝试将此字符串复制到其自身的偏移量为 2 处,并且一次可以移动 4 个字符:
abcdefghijklmnop
首先,您读取字符 0-3 ( abcd
) 并将它们复制到字符串中,给出:
abcdefghijklmnop
^---
v---
ababcdghijklmnop
然后复制字符 4-7 (cdgh) 并将它们复制到下一个位置:
ababcdghijklmnop
^---
v---
ababcdcdghklmnop
然后你复制8-11:
ababcdcdghklmnop
^---
v---
ababcdcdghghklop
等等。如您所见,由于一次只从不断变化的源复制某个缓冲区,您最终会得到重复的模式,例如ababcdcdghgh..
推荐阅读
- java - Java JTextField 无法更新
- mongodb - AKS Mongo 数据不与 Azure 文件共享保持一致
- javascript - 如何从生产汇总构建中删除 React PropTypes?
- python - 将带有密码的 zip 提取到另一个没有文件夹名的目录
- visual-studio - 漂浮在视觉工作室
- javascript - axios一个参数中有多个值(逗号分隔)
- php - 最后插入带有教义的 ID 导致 500 错误 PHP
- git - 如何使 Github 存储库依赖于另一个存储库的特定版本?
- mainframe - JCL:带有 SET 语句的 IF 语句
- javascript - jquery添加类但dom不更新