Java 将一个图像粘贴到另一个图像上而不扭曲源图像

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

我需要从一个图像中裁剪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 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。