java - 使用 JSlider 更改图像亮度
问题描述
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
int val = slider.getValue();
for(int x = 0; x < image.getWidth(); x++) {
for(int y = 0; y < image.getHeight(); y++) {
image.setPixel(x, y, image.getPixel(x, y).brighter());
frame.repaint();
}
}
}
});
所以这是我用来改变图像亮度的 ChangeListener。它工作得很好,图像变得更亮。我遇到的问题是,我以何种方式移动滑块并不重要,因为无论哪种方式它都会变得更亮。我希望它的工作方式是,只有当滑块向右移动时,图像才会变得更亮。
解决方案
你永远不会使用val的值。为什么不这样做:图像亮度滑块 Java
for(int x = 0; x < image.getWidth(); x++) {
for(int y = 0; y < image.getHeight(); y++) {
Color color = new Color(image.getRGB(x, y));
int r, g, b;
val = slider.getValue();
r = ((color.getRed() + (val/20)) % 255);
b = ((color.getBlue() + (val/20)));
g = ((color.getGreen() + (val/20)) % 255);
if(b > 255) b = 255;
color = new Color(r, g, b);
image.setRGB(x, y, color.getRGB());
}
}
我在背景上测试了这个,而不是逐个像素,起始颜色是蓝色。您必须根据起始颜色更改上面的代码,因为通过添加更多颜色来增加亮度。蓝色的起始值为 (0, 0, 255),因此您不能再添加任何蓝色来增加亮度。
推荐阅读
- python - 我应该如何使用以前版本的 Python 删除 pip 安装的剩余 Python 包?
- c++ - shared_ptr 上是否有要从缓存中删除的通知程序
- sql - jsonb的Postgres聚合函数
- node.js - 护照js生成的cookie内容
- if-statement - 谷歌表格嵌套如果公式,两位数和三位数不同?
- postgresql - 如何在 postgresql 中交换 geom 类型 cloumn 的 lat long 值
- android - 什么是编程模块(Android)
- istio - 根据 URL 路径生成 Istio 指标
- python - Python 不一致的 UnboundLocalError 行为。一个局部变量抛出错误,而另一个没有
- list - 当在颤动中单击按钮时,如何在空的动态列表中添加动态项目?