浮雕效果实现原理:

算法原理:用前一个像素点的RGB值分别减去当前像素点的RGB值并加上127作为当前像素点的RGB值。
例: ABC代表三个连续像素点, 求B点的浮雕效果如下:
B.a = C.a - B.a + 127;
B.r = C.r - B.r + 127;
B.g = C.g - B.g + 127;
B.b = C.b - B.b + 127;
注意RGB值在0~255之间。

一、什么都不说了,直接上代码

    /*** 对相片进行浮雕处理*/private fun reliefImage(): Bitmap {val bm = BitmapFactory.decodeResource(resources, R.drawable.a)val width = bm.widthval height = bm.heightval size = width * heightval bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)var newPixels = IntArray(size)var oldPixels = IntArray(size)bm.getPixels(oldPixels, 0, width, 0, 0, width, height)for (i in 1..size - 1) {//前一个像素val preColor = oldPixels[i - 1]var preA = Color.alpha(preColor)var preR = Color.red(preColor)var preG = Color.green(preColor)var preB = Color.blue(preColor)//后一个像素val nextColor = oldPixels[i]val newA = Color.alpha(nextColor)val newR = Color.red(nextColor)val newG = Color.green(nextColor)val newB = Color.blue(nextColor)preA = (preA - newA + 127)preR = (preR - newR + 127)preG = (preG - newG + 127)preB = (preB - newB + 127)if (preA > 255) {preA = 255}if (preR > 255) {preR = 255}if (preG > 255) {preG = 255}if (preB > 255) {preB = 255}newPixels[i] = Color.argb(preA, preR, preG, preB)}bmp.setPixels(newPixels, 0, width, 0, 0, width, height)return bmp}

二、获取处理后的Bitmap

                val bm = XThread.submit(Callable<Bitmap> {return@Callable reliefImage()})imageView!!.setImageBitmap(bm)

注意:这里的XThread,是自己写的线程池执行线程后,获取返回值。

详情参见:Android APP优化—Android程序员必须掌握 这篇文章中的线程优化部分。

三、效果图

kotlin 图片浮雕处理相关推荐

  1. 2017谷歌开发者大会GDD Review and Kotlin图片和嘉宾PPT放送~

    2017谷歌开发者大会GDD Review and Kotlin深圳场于12.17日举办,现场参与GDD的组织者嘉宾Nicky分享GDD见闻,满足大家对GDD现场的一切好奇心,另外Tencent应用宝 ...

  2. [Android] 通过Menu实现图片怀旧、浮雕、模糊、光照和素描效果

        由于随手拍项目想做成类似于美图秀秀那种底部有一排Menu实现不同效果的功能,这里先简单介绍如何通过Menu实现打开相册中的图片.怀旧效果.浮雕效果.光照效果和素描效果.后面可能会讲述如何通过P ...

  3. 【C#】图片处理——浮雕、黑白、油画效果源码

    本例应用场合:对图片进行基本的翻转操作,图片浮雕.黑白.油画效果的实现. 本例编译环境:VS2010及以上版本编译通过. 运行效果: 运行动态效果 主要功能: 图片浮雕.黑白.油画效果处理: 图片翻转 ...

  4. 【181126】VC++ 实现图像浮雕艺术效果处理源代码

    源码下载简介 VC++对图片进行浮雕效果处理,把一幅完整的图像装饰成雕刻的效果,非常不错,大家可以试着换几张底图,有些图片是比较适合用本效果进行修饰的,测试效果请参见运行测试图.在VB中有不少的图片浮 ...

  5. Android图像处理整理

    Android图像处理整理 参考:http://blog.csdn.net/luzhenyuxfcy/article/details/49427781 我们常用的处理方式基本都是在对像素矩阵按照一定的 ...

  6. 关于利用传统图像处理方法进行瑕疵检测的总结

    以iPhone背壳为例,进行瑕疵检测 传统算法方向的选择 瑕疵检测关注的两个问题 瑕疵的标注 瑕疵的量化 历程 1.图像去噪->灰度化->二值化 2.图像去噪->灰度化->ca ...

  7. 用Kotlin撸一个图片压缩插件-实战篇(三)

    简述: 由于个人原因,已经有很长一段时间没有写过文章,有句话是那么说的只要开始就不会太晚,所以我们开始<用Kotlin撸一个图片压缩插件>系列文章最后一篇实战篇.实际上我已经把源码发布到了 ...

  8. 用Kotlin撸一个图片压缩插件ImageSlimming-导学篇(一)

    简述: 很久没有发布Kotlin的实战相关的内容,这段时间在折腾Intellij IDEA的插件开发,折腾出了几个小插件,因为最近公司业务分离,原来堆在基础业务那边模块,都以模块的形式抽离出来,独立仓 ...

  9. 【C#】图片处理(底片,黑白,锐化,柔化,浮雕,雾化)

    通过GDI+对图片数据进行处理,下面列出各个效果的算法 对于读取图片的每个像素颜色的速度非常慢,这里使用LockBitmap类来对图片像素进行操作,LockBitmap类的定义看这里 http://w ...

最新文章

  1. linux服务器重启后阵列卡分区没了,服务器数据丢失了怎么恢复/分区丢失恢复教程...
  2. php日志导出oracle,一个php导出oracle库的php代码
  3. 2.3基本算法之递归变递推_3525上台阶 python
  4. C#不区分大小写的字符串替换(Replace)函数
  5. Android 系统(254)---Android libphonenumber Demo 手机号码归属地
  6. scal的函数定义(day01)
  7. 关于安全校验代码的一些心得
  8. AI界的革命!终于可以自动标注了!
  9. Java并发编程基础-锁-synchronized状态变换
  10. windows系统mysql常用命令_Windows下 MySQL命令 常用操作
  11. joomla 网页修改_修改Joomla的8个技巧和技巧! 范本
  12. 公积金贷款逾期预测Baseline分享
  13. 三步棋,跟着bit鹏哥学得
  14. 项目管理(软件开发)之思维导图使用
  15. Porteus Kiosk
  16. HTTP服务器中keep-alive 与 url常见问题
  17. 边缘计算的深刻详细解读
  18. 做了个后末日朋克风的梦
  19. 微前端在得物客服域的实践/那么多微前端框架,为啥我们选Qiankun + MF
  20. 【嵌入式系统基础第九周作业】---LED呼吸灯

热门文章

  1. 二维数组不定长度问题
  2. React Native 一:开发环境搭建
  3. 互联网人的音乐基础(四)
  4. mysql和虚拟主机区别_什么是mysql虚拟主机?mysql虚拟主机有哪些优势?
  5. ubuntu 查看内存命令
  6. python 爬虫(爬取网页的img并下载)
  7. 北京喜意来一支被豪门骗子出卖被迫北漂的足球队
  8. ICC遇到Severe Error: Fatal error: Placer did not complete. (PSYN-375)
  9. Linux软件管理包-源码包与rmp包区别,及其安装与卸载
  10. JavaScript fixed() 方法