【Android】使用SeekBar调整图像的色度、饱和及度亮度
来源:互联网 发布:淘宝海外旗舰店真假 编辑:程序博客网 时间:2024/05/29 09:06
SeekBar通过滑块位置来标识数值,且允许用户拖动滑块来改变值。下面利用三条SeeKBar来调整图片的色度(Hue)、饱和度(Saturation)、亮度(Lum)。
布局文件为一个ImageView,三条SeekBar,布局简单,在此省略。
首先创建一个图像处理类ImageHelper:
public class ImageHelper { public static Bitmap handleImage(Bitmap bmp, float hue, float saturation, float lum){ Bitmap bm = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bm); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); ColorMatrix hueMatrix = new ColorMatrix(); hueMatrix.setRotate(0,hue); hueMatrix.setRotate(1,hue); hueMatrix.setRotate(2,hue); ColorMatrix satMatrix = new ColorMatrix(); satMatrix.setSaturation(saturation); ColorMatrix lumMatrix = new ColorMatrix(); lumMatrix.setScale(lum,lum,lum,1); //涓変釜閫氶亾鍜岄�忔槑搴� ColorMatrix imgMatrix = new ColorMatrix(); //涓変釜ColorMatrix杩涜铻嶅悎 imgMatrix.postConcat(hueMatrix); imgMatrix.postConcat(satMatrix); imgMatrix.postConcat(lumMatrix); paint.setColorFilter(new ColorMatrixColorFilter(imgMatrix)); canvas.drawBitmap(bmp,0,0,paint); return bm; }}下面是MainActivity中的处理:
/** * Created by dell on 2016/1/10. */public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener { private TextView textView; private SeekBar hue_bar, sat_bar, lum_bar; private Button cancel_btn, ok_btn; private ImageView hsl_img; private static int MAX_VALUE = 255; private static int MID_VALUE = 127; private float mHue, mSaturation, mLum; private Bitmap bitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); } private void initViews() { bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.lin); textView = (TextView) findViewById(R.id.textView); hue_bar = (SeekBar) findViewById(R.id.seekBar_h); sat_bar = (SeekBar) findViewById(R.id.seekBar_s); lum_bar = (SeekBar) findViewById(R.id.seekBar_l); hsl_img = (ImageView) findViewById(R.id.hsl_img); hue_bar.setOnSeekBarChangeListener(this); sat_bar.setOnSeekBarChangeListener(this); lum_bar.setOnSeekBarChangeListener(this); hue_bar.setMax(MAX_VALUE); //设置最大值 sat_bar.setMax(MAX_VALUE); lum_bar.setMax(MAX_VALUE); hue_bar.setProgress(MID_VALUE); //设置初始值 sat_bar.setProgress(MID_VALUE); lum_bar.setProgress(MID_VALUE); hsl_img.setImageBitmap(bitmap); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { switch (seekBar.getId()){ case R.id.seekBar_h: mHue = (progress - MID_VALUE) * 1.0F / MID_VALUE * 180; break; case R.id.seekBar_s: mSaturation = progress * 1.0F / MID_VALUE; break; case R.id.seekBar_l: mLum = progress * 1.0F / MID_VALUE; break; } hsl_img.setImageBitmap(ImageHelper.handleImage(bitmap,mHue,mSaturation,mLum)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { }}SeekBar需要绑定的是setOnSeekBarChangeListener来实现对拖动位置的改变,里面有三个方法,主要需要重写的是
void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)progress代表监测到的当前滑动位置。
最后,附上实验效果,打开界面,并进行调节:
0 0
- 【Android】使用SeekBar调整图像的色度、饱和及度亮度
- 怎样调整图像的亮度、色度、饱和度和对比度?我要代码或者可用的DLL
- Android调整手机屏幕亮度Brightness seekbar实现
- 图像亮度/对比度的调整
- PPStream调整亮度,色度,饱和度,对比度
- Android学习笔记(六) 调整手机屏幕亮度Brightness seekbar实现
- Android学习笔记(六) 调整手机屏幕亮度Brightness seekbar实现
- opencv 图像对比度及亮度调整
- Android中SeekBar的调整
- android屏幕亮度的调整
- android屏幕亮度的调整
- 调整Android的默认亮度
- 【学习OpenCV】图像的亮度/对比度调整
- Opencv图像对比度和亮度的调整
- OpenCV-调整图像的对比度、亮度
- 图像亮度自适应调整
- 图像亮度自适应调整
- 基于图像内插值和外插值的亮度/对比度调整及模糊/锐化方法
- p243 第六题 (不完整)
- 简易在线投票系统(php)——发布投票页面
- WIFI 信道
- android中关于notification的最新用法
- 抽象工厂模式
- 【Android】使用SeekBar调整图像的色度、饱和及度亮度
- [LeetCode-119] Pascal's Triangle II(帕斯卡三角形第K行数据)
- 基于连通性状态压缩的动态规划--【插头DP】模板超级详细解释
- linux信息安全_SSL,PKI,CA篇
- POJ Avoid The Lakes
- Openwrt 硬改过程记录
- WebRTC(RTCWeb)学习--------阿冬专栏!!!!
- 创建上下文菜单
- 分布式配置管理系统QConf