阅读本系列,请先看前言!谢谢

放大镜与哈哈镜原理上是一样的,我们只要找到相关映射即可。

如这张图所示。不同的映射会有不同的效果,如线性映射会产生放大缩小的感觉,凸函数则会是凸透镜,凹函数就是凹透镜,原则上,不同的函数就不会产生不同的结果

当然对函数也有一定的要求,比如在变化区域的边缘要保持不变。

说完原理,先上放大镜的代码:

public Image filter() {int[] d = new int[this.img.w*this.img.h]; //must be writed as this.not int[] d = this.img.data;int cenX = (int)(this.img.w/2);int cenY = (int)(this.img.h/2);int therash = this.img.w/6;for (int y = 0; y < this.img.h ; y++) {for (int x = 0; x < this.img.w; x++) {d[x + y * this.img.w] = getRGB(cenX,cenY,x,y,therash);}}this.img.data = d;return this.img;}private int getRGB(int cenX,int cenY,int x,int y,int therash){int rgb =0;int m= 2;//the rateif(Math.sqrt((cenX-x)*(cenX-x) +(cenY-y)*(cenY-y)) < therash){int tx = (x - cenX)/m + cenX;int ty = (y - cenY)/m + cenY;rgb = this.img.data[tx + ty * this.img.w];}else{rgb = this.img.data[x + y * this.img.w];}return rgb;}

哈哈镜的代码:

@Overridepublic Image filter() {int[] d = new int[this.img.w*this.img.h]; //must be writed as this.not int[] d = this.img.data;int cenX = (int)(this.img.w/2);int cenY = (int)(this.img.h/2);int therash = this.img.w/6;for (int y = 0; y < this.img.h ; y++) {for (int x = 0; x < this.img.w; x++) {d[x + y * this.img.w] = getRGB(cenX,cenY,x,y,therash);}}this.img.data = d;return this.img;}private int getRGB(int cenX,int cenY,int x,int y,int therash){int rgb =0;int m= 2;int rate = therash/m;if(Math.sqrt((cenX-x)*(cenX-x) +(cenY-y)*(cenY-y)) < therash){int tx = (x - cenX)/m ; //此处不同的变换函数会导致不同的效果int ty = (y - cenY)/m ;tx  =(int)(tx*getDistance(cenX, cenY, x, y)/rate) + cenX;ty  =(int)(ty*getDistance(cenX, cenY, x, y)/rate) + cenY;rgb = this.img.data[tx + ty * this.img.w];}else{rgb = this.img.data[x + y * this.img.w];}return rgb;}private double getDistance(int centerX, int centerY, int px, int py) {  double xx = (centerX - px)*(centerX - px);  double yy = (centerY - py)*(centerY - py);  return (int)Math.sqrt(xx + yy);  }

老规矩,上运行结果:

以上

java 图像特效之放大镜与哈哈镜相关推荐

  1. java 图像特效之老照片

    阅读本系列,请先看前言!谢谢 让图像微微泛黄-是不是充满回忆呢- 本文先给出一种实现方法(参考:图像处理之老照片特效) 算法步骤如下: 1. 首先对图像重新计算RGB值,计算公式如下: int fr= ...

  2. java 图像特效之黑白 浮雕和底片

    阅读本系列,请先看前言!谢谢 所谓黑白图片其实就是对图像进行去色,也就是灰度化,只要调用之前写过的灰度化函数即可. 底片的原理就是对RGB取补色即可.也就是将当前像素点的RGB值分别与255之差后的值 ...

  3. java 图像特效之图像混合(溶图)

    阅读本系列,请先看前言!谢谢 photoshop中的图层混合功能大家一定很熟悉.此功能可以根据指定模式,将2个图层进行混合,实现不同色彩风格的图像效果,也就是我们通常所说的溶图. 实现图像混合的原理其 ...

  4. java油画转换,java 图像特效之油画

    油画也算是一种常见的艺术品了,谁说咱们IT男不懂艺术-我们还能创造艺术,不多说,先说原理. 油画的算法很简单,对某一像素,用它附近随机一个像素来代替.没错就这么简单. 上代码: public Imag ...

  5. android图片凹凸效果,图像滤镜处理算法:柔化、光照、放大镜、哈哈镜

    本文的最后提供了完整的Android工程下载,图像处理部分主要采用JNI,算法使用C实现,因为在开发过程中发现使用Java来进行数值处理时,速度绝对是不堪忍受的.现在代码中依然保留了一些Java的滤镜 ...

  6. 图像滤镜处理算法:柔化、光照、放大镜、哈哈镜

    转载自:http://www.icodelogic.com/?p=588 本文的最后提供了完整的Android工程下载,图像处理部分主要采用JNI,算法使用C实现,因为在开发过程中发现使用Java来进 ...

  7. Java图片gh颜色渐变_强大的Java图像滤镜特效类库Java Image Filters

    Java Image Filters是一款基于Java的图像处理类库,特别是在图像滤镜特效方面,Java Image Filters简直就是强大到天衣无缝.它几乎提供了PS上大部分的图像特效.比如反色 ...

  8. 用JavaScript实现的十个图像特效

    用JavaScript实现的十个图像特效 Reflex.js 此JavaScript,可以为你网页上的图像添加变形和反射的效果. 您可以调整反射,倾斜角度和边缘变形. 结果是这个样子. Curl.js ...

  9. PhotoScape X Pro for Mac(图像特效处理及编辑工具)

    Photoscape for Mac 破解版不仅仅是一款有趣和简单的照片编辑器,同时它还集成了各种图片的编辑功能,可以说是轻量级的PS,使您能够修复和增强照片,简单易用,它不仅能够将照片修饰得十分完美 ...

最新文章

  1. 组装计算机的游戏,如何组装一台游戏电脑
  2. 是什么牌子_电暖气片什么牌子好
  3. 139.00.005 Git学习-分支管理
  4. 用python画奥迪标志_不知道不 OK!53 个 Python 经典面试题详解
  5. Shell中自定义函数
  6. infor wms 项目启动_全一,企业物流定制专家——企业客户项目管理流程解析
  7. 使用.NET Core创建Windows服务(二) - 使用Topshelf方式
  8. python moviepy 音量_python moviepy 视频剪辑代码
  9. 类名 窗口句柄 结束进程
  10. SinoBBD王帅宇:成为最大的第三方公立大数据平台,关键在于“联动”
  11. 网状meta分析怎么入门?网状meta分析与meta分析区别
  12. PTA程序设计综合实践1.10
  13. 有哪些好看的字体可以免费用?看完这篇就知道了
  14. 微信支付接口详细步骤
  15. 电力工程项目管理系统
  16. 深入理解凸优化核心理论:对偶
  17. web自动化测试-第一讲:selenium快速入门
  18. 备战下半年秋招,分享蚂蚁Java岗面试题80+
  19. 3D打印机内网联机打印(1)orangpiPlus安装Octoprint
  20. leetcode253

热门文章

  1. 安川机器人实现激光追踪程序
  2. TensorRT实现RetinaFace推理加速(一)
  3. H5页面-两步搞定文字首行缩进
  4. design短语的用法总结_最新高中英语知识点详解之design的用法及常见短语
  5. 使用nssm将命令行启动的应用程序(.exe,.bat等)注册成windows后台服务
  6. 奶茶介绍-网页实验报告
  7. 等额本息和等额本金公式详解
  8. 基于intel x86+fpga智能驾驶舱和高级驾驶辅助系统硬件设计(二)
  9. 搭建开源智能家居系统Domoticz
  10. [原]浅谈几种服务器端模型——反应堆的设计