有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何为图片提供一个深褐色过滤器

我试图用一个深褐色的滤镜打印出一张图片,但它只打印两次相同的(未编辑的)图片。如何让底部的sepia代码正常工作?该代码将图片转换为灰度,然后转换为深褐色

import images.*;

public class Sepia{

 public static void main(String[]args){
  APImage image = new APImage("lobster.jpg");
  image.draw();
  APImage aCopy = image.clone();
  for (Pixel p: aCopy){
     int red = p.getRed();
     int green = p.getGreen();
     int blue = p.getBlue();
     int average = (red + green + blue) / 3;
     p.setRed(average);
     p.setGreen(average);
     p.setBlue(average);

     if (red < 63){
       red = (int)(red *1.1);
       blue = (int)(blue * 0.9);
     }else if (red < 192){
       red = (int)(red*1.15);
       blue = (int)(blue *0.85);
     }else{
       red = Math.min((int)(red*1.08),255);
       blue = (int)(blue *0.93);
     }

     aCopy.draw();
     aCopy.save();
   }
 }
}

共 (1) 个答案

  1. # 1 楼答案

    尝试在绘图之前添加此项

     p.setRed(red);
     p.setGreen(green);
     p.setBlue(blue);
    

    另外,将绘图和保存从for循环中取出