Android 快速更改位图亮度
我有两个1080*1080和3000*3000的位图,我想改变位图的亮度,我成功了,但问题是我用seekbar做了这件事,它做了很多工作,它的大小超过1080*1080,因为它是3000*3000位图。亮度变化很快,但有时甚至1080*1080位图也会闪烁,但60*60大小的位图的亮度变化非常快 我的问题是如何像使用图像编辑器一样快速更改高维位图的亮度Android 快速更改位图亮度,android,bitmap,Android,Bitmap,我有两个1080*1080和3000*3000的位图,我想改变位图的亮度,我成功了,但问题是我用seekbar做了这件事,它做了很多工作,它的大小超过1080*1080,因为它是3000*3000位图。亮度变化很快,但有时甚至1080*1080位图也会闪烁,但60*60大小的位图的亮度变化非常快 我的问题是如何像使用图像编辑器一样快速更改高维位图的亮度 亮度编码链路 实现这一目标有两种可能: 推荐: <jp.co.cyberagent.android.gpuimage.GPUImageVi
亮度编码链路 实现这一目标有两种可能: 推荐:
<jp.co.cyberagent.android.gpuimage.GPUImageView
android:id="@+id/gpuimageview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
private SeekBar seekBarBrightness;
private float brightnessOpacity = 50.0f;
private GPUImageView mGPUImageView;
seekBarBrightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
brightnessOpacity = (float) i;
mGPUImageView.setFilter(new GPUImageBrightnessFilter(range((int) brightnessOpacity , -0.5f, 0.5f));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
protected static float range(int percentage, float start, float end) {
return (((end - start) * ((float) percentage)) / 100.0f) + start;
}
<jp.co.cyberagent.android.gpuimage.GPUImageView
android:id="@+id/gpuimageview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
private SeekBar seekBarBrightness;
private float brightnessOpacity = 50.0f;
private GPUImageView mGPUImageView;
seekBarBrightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
brightnessOpacity = (float) i;
mGPUImageView.setFilter(new GPUImageBrightnessFilter(range((int) brightnessOpacity , -0.5f, 0.5f));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
protected static float range(int percentage, float start, float end) {
return (((end - start) * ((float) percentage)) / 100.0f) + start;
}
onProgressChanged
方法中的代码替换为onStopTrackingTouch
方法
seekBarBrightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//YOUR CODE HERE
}
});
非常感谢,这对我来说是一个非常重要的问题。我做了一些研究,但找不到你在网站上的用法,你能给我一个关于如何使用所有过滤器的链接吗?@Anonim抱歉,但你要求的是亮度,对,如果你想实现更多的过滤器,请问另一个问题,我很乐意帮你看看这个问题:()