processing学习整理---Image

1、Load and Display(加载与显示)

Images can be loaded and displayed to the screen at their actual size or any other size.

图像可以按照其实际尺寸或任何其他尺寸加载并显示到屏幕。

PImage img;  // Declare variable "a" of type PImage

void setup() {
  size(640, 360);
  // The image file must be in the data folder of the current sketch
//图片文件必须在当前草稿文件的同一文件夹才能加载成功。
  // to load successfully
  img = loadImage("moonwalk.jpg");  // Load the image into the program
}

void draw() {
  // Displays the image at its actual size at point (0,0)
  image(img, 0, 0);
  // Displays the image at point (0, height/2) at half of its size
  image(img, 0, height/2, img.width/2, img.height/2);
}

2、Background Image. (背景图片)

This example presents the fastest way to load a background image into Processing. To load an image as the background, it must be the same width and height as the program.

此示例介绍将加载背景图像的最快方法转换到Processing。 要加载图像作为背景,它必须与程序的宽度和高度相同。

PImage bg;
int y;

void setup() {
  size(640, 360);
  // The background image must be the same size as the parameters
  // into the size() method. In this program, the size of the image
  // is 640 x 360 pixels.
  bg = loadImage("moonwalk.jpg");
}

void draw() {
  background(bg);

  stroke(226, 204, 0);
  line(0, y, width, y);

  y++;
  if (y > height) {
    y = 0;
  }
}

3、透明度。

向左移动,指针对面的形象改变立场。本方案通过用色调()函数修改图像的α值覆盖在另一个图象。

PImage img;
float offset = 0;
float easing = 0.05;

void setup() {
  size(640, 360);
  img = loadImage("moonwalk.jpg");  // Load an image into the program
}

void draw() {
  image(img, 0, 0);  // Display at full opacity
  float dx = (mouseX-img.width/2) - offset;
  offset += dx * easing;
  tint(255, 127);  // Display at half opacity
  image(img, offset, 0);
}

4、遮罩

为图像加载“遮罩”以指定图像不同部分的透明度。 使用Image的mask()方法将两个图像混合在一起。

PImage img;
PImage imgMask;

void setup() {
  size(640, 360);
  img = loadImage("moonwalk.jpg");
  imgMask = loadImage("mask.jpg");
  img.mask(imgMask);
  imageMode(CENTER);
}

void draw() {
  background(0, 102, 153);
  image(img, width/2, height/2);
  image(img, mouseX, mouseY);
}

5、创建图像。

createImage()函数提供了一个新的像素的缓冲区。 此示例创建图像渐变。

PImage img;

void setup() {
  size(640, 360);
  img = createImage(230, 230, ARGB);
  for(int i = 0; i < img.pixels.length; i++) {
    float a = map(i, 0, img.pixels.length, 255, 0);
    img.pixels[i] = color(0, 153, 204, a);
  }
}

void draw() {
  background(0);
  image(img, 90, 80);
  image(img, mouseX-img.width/2, mouseY-img.height/2);
}

6、点画

鼠标水平位置控制点的大小。 使用根据图像中的像素着色的椭圆创建简单的点画效果。

PImage img;
int smallPoint, largePoint;

void setup() {
  size(640, 360);
  img = loadImage("moonwalk.jpg");
  smallPoint = 4;
  largePoint = 40;
  imageMode(CENTER);
  noStroke();
  background(255);
}

void draw() {
  float pointillize = map(mouseX, 0, width, smallPoint, largePoint);
  int x = int(random(img.width));
  int y = int(random(img.height));
  color pix = img.get(x, y);
  fill(pix, 128);
  ellipse(x, y, pointillize, pointillize);
}

7、请求图像由Ira Greenberg(从为Flash开发人员处理)。

展示如何使用requestImage()函数与preloader动画。 requestImage()函数在单独的线程上加载图像,以使草图在加载时不会冻结。 当你加载大图片时,它非常有用。这些图像是小的快速下载,但尝试应该大的图像,以获得完整的效果。

int imgCount = 12;
PImage[] imgs = new PImage[imgCount];
float imgW;

// Keeps track of loaded images (true or false)
boolean[] loadStates = new boolean[imgCount];

// For loading animation
float loaderX, loaderY, theta;

void setup() {
  size(640, 360);
  imgW = width/imgCount;

  // Load images asynchronously
  for (int i = 0; i < imgCount; i++){
    imgs[i] = requestImage("PT_anim"+nf(i, 4)+".gif");
  }
}

void draw(){
  background(0);

  // Start loading animation
  runLoaderAni();

  for (int i = 0; i < imgs.length; i++){
    // Check if individual images are fully loaded
    if ((imgs[i].width != 0) && (imgs[i].width != -1)){
      // As images are loaded set true in boolean array
      loadStates[i] = true;
    }
  }
  // When all images are loaded draw them to the screen
  if (checkLoadStates()){
    drawImages();
  }
}

void drawImages() {
  int y = (height - imgs[0].height) / 2;
  for (int i = 0; i < imgs.length; i++){
    image(imgs[i], width/imgs.length*i, y, imgs[i].height, imgs[i].height);
  }
}

// Loading animation
void runLoaderAni(){
  // Only run when images are loading
  if (!checkLoadStates()){
    ellipse(loaderX, loaderY, 10, 10);
    loaderX += 2;
    loaderY = height/2 + sin(theta) * (height/8);
    theta += PI/22;
    // Reposition ellipse if it goes off the screen
    if (loaderX > width + 5){
      loaderX = -5;
    }
  }
}

// Return true when all images are loaded - no false values left in array
boolean checkLoadStates(){
  for (int i = 0; i < imgs.length; i++){
    if (loadStates[i] == false){
      return false;
    }
  }
  return true;
}

时间: 2024-10-17 22:08:22

processing学习整理---Image的相关文章

processing学习整理---Structure

1.语法介绍:与java很相近,可以认为就是java. 2.运行命令(linux): processing-java --output=/tmp/processing-xx --run --force --sketch={问存在路径} 3.sketch: 每个sketch(草稿)就是保存在电脑相应文件夹中的,存放有相关processing代码的文件,后缀为:pde以及影音文件(另外存放在data文件夹中). 4.变量: 1).区分大小写. 2).类型包括:整形(int),浮点型(float),字

dataTables 插件学习整理

在项目中使用了dataTables 插件,学习整理一下. dataTables 的官方中文网站 http://www.datatables.club 引入文件: 所有的都要引入 jq文件 1. dataTables 的样式 <link rel="stylesheet" href="jquery.dataTables.css"> <script src="jquery.dataTable.js"> 2. bootstrap

ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

崧闱旭 ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

java中反射学习整理

转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力. java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接.反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活应用代码的主要工具.需要注意的是,如果使用不当,反射的成本会很高. package

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr

java密码学学习整理--对称加密(着重描述3des)

1.对称加密要点 对称加密算法的核心是加密和解密操作使用同一套密钥.加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 2.des(参考自:http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin) DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的

2017年 1月 15日 指针 学习整理

有关指针的概念: 指针是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址. FIrst of all:我们需要明确目标 关于指针的学习以及使用我们需要搞清楚有关指针的四个内容:指针的类型,指针所指向的类型,指针的值(或者说叫指针所指向的内存区),还有指针本身所占用的内存区(指针也是一个特殊的变量吗,它肯定也是占据内存的).接下来让我们分别进行学习. 我们先来申明几个指针的例子: 1 int *ptr; 2 char *ptr; 3 int **ptr; 4 int (*ptr)[3];

TweenMax学习整理--特有属性

TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓动的对象 duration:Number -- 缓动持续时间 vars:Object -- 其它参数(特有属性29个,插件17个,公共属性10个,公共方法20个) TweenMax提供的方法大多都会返回一个TweenMax Object实例 [特有属性(29个)] 这29个参数可以直接传入第三个obje

linux学习 整理(1)

ls目录文件 uname 现实当前系统信息 clear 清理 history 历史记录 ctrl + R 搜索历史记录 ESC按完之后按. 补齐上次参数 切换root用户 su - 使用管理员权限运行命令 sudo 现实当前用户信息 id 修改当前用户密码 passwd 命令 + & 在后台运行进程 jobs查看后台作业 ctrl + Z 暂停某个程序 bg 控制进程继续在后台运行 fg 控制进程在前台运行 ctrl + C 结束当前命令 linux学习 整理(1),布布扣,bubuko.com