前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何用 Processing 修一张美艳的自拍照?| 可视化与生成设计专栏

如何用 Processing 修一张美艳的自拍照?| 可视化与生成设计专栏

作者头像
mixlab
发布2021-03-25 12:32:23
6390
发布2021-03-25 12:32:23
举报

Processing

是一种开源编程语言,专门为电子艺术和视觉交互设计而创建,其目的是通过可视化的方式辅助编程教学,并在此基础之上表达数字创意

半色调图像(Halftone Image)

指的是通过有规律的圆点表现画面的特殊效果。

这些基础图形(通常为圆点)可以通过大小、间距等有层次的变化来表现图案中的明暗过渡,使图像的局部平均灰度接近于原始图像的局部平均灰度,从而实现在单色/多色二值呈色设备上的最优再现,常见的加网阳片菲林和阴片菲林以及印刷图像均属于半色调图像。

由于人眼的低通特性,在一定距离观察下,人眼会将空间中接近的部分,视为一个整体,因此人所观察到的图像,会呈现出与连续调图像相似的效果。与之相对应的是连续调图像(Continues-Tone Image)。

Processing 实现黑白半调效果

由于这里通过明度去控制网点大小,从而去还原图像原本的特征,所以在对于明度变化较丰富的图片最终结果的效果比较好。

代码语言:javascript
复制
PImage img;
//导入库
void setup(){
  size(500,500);
//设置画布大小
  img = loadImage("david.jpg");
//加载图片,图片需要与文件处于同一文件夹内
  img.resize(500,500);
//设置图片大小
  frameRate(10);
//设帧速率,默认每秒为30
}
void draw(){
  background(255);
//如果不写这条命令,每次运行的结果就会保留在背景上
  fill(0);
//圆形填充色为黑色
  noStroke();
//圆形无描边
  float tiles = mouseX/10;
  float tileSize = width/tiles;

  translate(tileSize/2,tileSize/2);
//改变原点位置

  for(int x =0; x<tiles; x++){
     for(int y =0; y<tiles; y++){
       color c = img.get(int(x*tileSize),int(y*tileSize));
       float size = map(brightness(c),0,255,tileSize,0);
//拾取坐标点亮度,其取值范围在0~255范围
  ellipse(x*tileSize,y*tileSize,size,size);
//像素点绘制,越亮
  }
 }
}

运行结果

看到这里的你们,还可以尝试将该效果更改为彩色半调效果或者改变网点的形状,也欢迎加入我们的读者专栏(文末),与我沟通!


下期预告:彩色半调效果,应该怎么做呢?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无界社区mixlab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Processing
  • 半色调图像(Halftone Image)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档