0
基本上我做了一個界面,顯示一個圖片,它有多個JSliders。每個人都有不同的功能,如模糊,變亮和飽和。我已經實現了滑塊,以便在添加新滑塊時覆蓋stateChanged方法。當我單獨執行滑塊時,此工作正常,但是一旦我使用不同的滑塊,它就會變回原始圖片。我想讓它使圖片在照片上積累過濾器。有什麼建議麼?這是我的一個滑塊的例子。試圖使圖片過濾器的效果累積在照片-java搖擺
brightSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider) e.getSource();
double scaleValue = source.getValue()/100.0;
Picture newPic = new PictureImpl(picture.getWidth(), picture.getHeight());
//Picture newPic = picture;
Pixel zeroPixel = new ColorPixel(0, 0, 0);
Pixel p;
for (int i = 0; i < picture.getWidth(); i++) {
for (int j = 0; j < picture.getHeight(); j++) {
newPic.setPixel(i, j, zeroPixel);
}
}
for (int i = 0; i < picture.getWidth(); i++) {
for (int j = 0; j < picture.getHeight(); j++) {
if (scaleValue > 0) {
p = picture.getPixel(i, j).lighten(scaleValue);
newPic.setPixel(i, j, p);
} else if (scaleValue < 0) {
p = picture.getPixel(i, j).darken(scaleValue);
newPic.setPixel(i, j, p);
}
}
}
setPic(newPic);
picture_view.setPicture(newPic.createObservable());
}
});
如果沒有可用的例子,我會建議,具有要應用效果的'List',所以如果你需要,你可以刪除它們。每次需要時,都會拍攝原始圖像並將每種效果應用到它上面,這就成了您在屏幕上顯示的內容。當需要時,您可以將這些效果「烘烤」成最終圖片 – MadProgrammer