Java 将一个图像粘贴到另一个图像上而不扭曲源图像
我需要从一个图像中裁剪3X3个pixcel部分,并将交叉部分粘贴到另一个图像中。我使用drawImage方法粘贴这些部分。但在进行此操作时,源图像的颜色正在发生变化,一些像素被扭曲Java 将一个图像粘贴到另一个图像上而不扭曲源图像,java,image,Java,Image,我需要从一个图像中裁剪3X3个pixcel部分,并将交叉部分粘贴到另一个图像中。我使用drawImage方法粘贴这些部分。但在进行此操作时,源图像的颜色正在发生变化,一些像素被扭曲 int t1=0,t2=0; targetFile=ImageIO.read(new File("Sky.png")); for(int i=0;i<=6;i+=3){ for(int j=0;j<=6;j+=3){ Graphics
int t1=0,t2=0;
targetFile=ImageIO.read(new File("Sky.png"));
for(int i=0;i<=6;i+=3){
for(int j=0;j<=6;j+=3){
Graphics g=targetFile.getGraphics();
BufferedImage dest=source.getSubimage(i, j, 3, 3);
g.drawImage(dest, t1,t2, Color.BLUE,null);
t1+=5;
t2+=5;
g.dispose();
}
}
File f2=new File("myimg1.jpg");
ImageIO.write(targetFile, "jpg", f2);
intt1=0,t2=0;
targetFile=ImageIO.read(新文件(“Sky.png”);
对于(int i=0;i而言,您似乎正在将文件保存为JPG。JPG文件使用有损压缩算法存储,为了节省空间,会产生轻微的图形瑕疵,因此会产生感知失真
尝试将其保存为无损格式,例如PNG。有点不清楚问题是什么。胡乱猜测:将输出图像也写为“PNG”
。问题仍然存在吗?如果没有,问题不在算法中,而是在JPG压缩中(默认情况下,JPG压缩在ImageIO
中相当高)是的,问题解决了。我将扩展名改为png。