词Ci 图片同时设置亮度和模糊度
来源:互联网 发布:淘宝少女装 编辑:程序博客网 时间:2024/05/17 02:30
两个SeekBar 分别控制亮度和模糊度,因为对图片的操作还是比较耗时的,所以在SeekBar改变时记下位置,定下来后再进行操作。
SeekBar seekBar1 = (SeekBar) view.findViewById(R.id.seekBar1); seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { /** * 拖动条停止拖动的时候调用 */ @Override public void onStopTrackingTouch(SeekBar seekBar) { drawPicture(bright, radius); } /** * 拖动条开始拖动的时候调用 */ @Override public void onStartTrackingTouch(SeekBar seekBar) { } /** * 拖动条进度改变的时候调用 */ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { bright = progress; } }); SeekBar seekBar2 = (SeekBar) view.findViewById(R.id.seekBar2); seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { /** * 拖动条停止拖动的时候调用 */ @Override public void onStopTrackingTouch(SeekBar seekBar) { drawPicture(bright, radius); } /** * 拖动条开始拖动的时候调用 */ @Override public void onStartTrackingTouch(SeekBar seekBar) { } /** * 拖动条进度改变的时候调用 */ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { radius = progress; } });
这里没什么介绍的,关键就在drawPicture(bright, radius)方法里了。
@TargetApi(11) private void drawPicture(int bright, int radius) { Bitmap bmp = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Config.ARGB_8888); try { int brightness = bright - 127; ColorMatrix cMatrix = new ColorMatrix(); cMatrix.set(new float[] {1, 0, 0, 0, brightness, 0, 1, 0, 0, brightness,// 改变亮度 0, 0, 1, 0, brightness, 0, 0, 0, 1, 0}); Paint paint = new Paint(); paint.setColorFilter(new ColorMatrixColorFilter(cMatrix)); Canvas canvas = new Canvas(bmp); canvas.drawBitmap(srcBitmap, 0, 0, paint); if (Build.VERSION.SDK_INT > 16) { RenderScript rs = RenderScript.create(getActivity()); Allocation overlayAlloc = Allocation.createFromBitmap(rs, bmp); ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, overlayAlloc.getElement()); blur.setInput(overlayAlloc); blur.setRadius(radius + 1); blur.forEach(overlayAlloc); overlayAlloc.copyTo(bmp); rs.destroy(); } else { // 低版本的折衷处理方法 bmp = Fastblur.fastblur(mContext, bmp, radius); } } catch (Exception e) { Log.e("ChangePicture", "drawPictureError"); } destBitmap = bmp; content.setBackgroundDrawable(new BitmapDrawable(getResources(), bmp)); }
先new了一个位图bmp,并用来初始化Cavas,再设置画笔的亮度,用paint把原图根据亮度画到Cavas上,canvas.drawBitmap(srcBitmap, 0, 0, paint);
再只需要对bmp设置模糊度就行了,可使用ScriptIntrinsicBlur,不过要在SDK>16才能使用,不过还有搜到一个低版本折衷处理方法,直接处理像素点的,可以自己下载代码去看,或网上搜索,这里就不介绍了(因为也不是太懂)。
0 0
- 词Ci 图片同时设置亮度和模糊度
- UIBUtton需同时设置图片和文字
- Android 自定义设置图片模糊度、高斯模糊效果
- 【OpenCV】图片对比度和亮度
- 图片模糊和背景视图设置毛玻璃效果
- iOS UIButton上同时加图片和标题,设置偏移
- CI中上传图片功能的设置
- 图片亮度
- OpenCV改变图片的对比度和亮度
- androidLCD和键盘 背光亮度设置
- androidLCD和键盘 背光亮度设置
- androidLCD和键盘 背光亮度设置
- Android 获取和设置屏幕亮度
- androidLCD和键盘 背光亮度设置
- 设置屏幕亮度 和 音乐音量
- 简单的图片处理器(设置色相,亮度,饱和度)
- 同时上传图片和图片属性
- Android 获取和设置屏幕亮度的模式和值
- zzuli OJ 1056: 整存零取
- Android状态栏透明(沉浸式效果)
- MySQL数据库获取记录集失败问题
- Java容器
- linux-语言包出错:This error could be caused by required additional software packages which ar
- 词Ci 图片同时设置亮度和模糊度
- ios开发之 调用系统电话方式(两种)
- Android Studio App EditText获取输入的文字
- CuraEngine的注释生成工具
- 错误:OPTION SQL_SELECT_LIMIT=DEFAULT
- zzuli OJ 1057: 素数判定
- django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单
- HDU 1022 Train Problem I(栈)
- js 处理 ie和firefox window.frames 兼容问题