#java
#java
Вопрос:
Я пытаюсь распечатать изображение с помощью фильтра сепии, но он просто печатает одно и то же (неотредактированное) изображение дважды. Как мне заставить работать мой код сепии внизу? Код преобразует изображение в оттенки серого, а затем в сепию.
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. Вы думаете, что javascript — это старший брат java или что-то в этом роде? 😉
2. Что такое
APImage
? Это не часть стандартной библиотеки Java. Что такое пиксель?3. @ErwinBolwidt Я тоже погуглил, это home.wlu.edu /~lambertk/hsjava/edition4/whatsnew/imagedocs/… (какой-то неправильный фрагмент кода, ИМХО …)
Ответ №1:
Попробуйте добавить это перед рисованием.
p.setRed(red);
p.setGreen(green);
p.setBlue(blue);
кроме того, извлеките рисунок и сохраните из цикла for
Комментарии:
1. Как раз перед
aCopy.draw()
этим?2. В дополнение к настройке компонентов RGB, как описано выше: переместите
aCopy.draw();
иaCopy.save();
изfor
цикла -!3. Примечание: обязательно ли вам использовать эту библиотеку изображений? Если вам не нужно его использовать: рассмотрите другой.
class APImage extends JFrame
заставляет меня дергаться….4. @Marco13 Я перепробовал все эти вещи, и это все еще не работает.
5. Подходит ли вам пример «TestGrayscale» из документации APImage?