FLASH AS实现马赛克效果

  动画效果:

点击这里下载源文件

  一般实现马赛克有 2 种办法, 采用的都是遍历图像上的像素, 对相隔一定范围内的像素填充同一颜色, 只不过采样的颜色位置不同, 有选中心点的, 也有选范围内全部像素平均值的, 考虑到 flash 的效率问题, 这个是选择中心点的, 可以省掉大量循环

  同时注意 stride 要 4 的倍数, 不然的话.. 自己看吧. 哈哈(月光注:其实用2的倍数也就可以了)

import flash.display.BitmapData;
// 场景中摆个叫 img 的 mc 就 ok
var oldBmp:BitmapData = new BitmapData(img._width, img._height);
oldBmp.draw(img);
var newBmp:BitmapData = mosaic(oldBmp, 12);
var mc = createEmptyMovieClip("mc", 1);
mc.attachBitmap(newBmp, getNextHightestDepth());
mc._x = img._width;
function mosaic(bmp:BitmapData, stride:Number):BitmapData {
 var startTime = getTimer();
 
 var newBmp:BitmapData = new BitmapData(bmp.width, bmp.height);
 var w = bmp.width / stride + 1;
 var h = bmp.height / stride + 1;
 var edgeW = bmp.width % stride; // 边缘不足 stride 的部分
 var edgeH = bmp.height % stride;
 var centerW = (stride-1)/2; // 第一格的中心点
 var centerH = centerY; // 第一格永远是方的
 var tmpX, tmpY; // 循环中的真实像素位置, 前面 w, h 被除过了..
 var blockW, blockH; // 马赛克的格子
 
 var i = -1;
 while (++i < w) {
  tmpX = i * stride;
  if (i == w - 1){
   blockW = edgeW;
  } else {
   blockW = stride;
  }
  centerW = (blockW - 1) / 2;
  var j = -1;
  while (++j < h) {
   tmpY = j * stride;
   if (i == h - 1){
    blockH = edgeH;
   } else {
    blockH = stride;
   }
   centerH = (blockH - 1) / 2;
   var color = bmp.getPixel(tmpX + centerW, tmpY + centerH);
   var m = -1;
   while (++m < blockW) {
    var n = -1
    while (++n < blockH) {
     newBmp.setPixel(tmpX + m, tmpY + n,color);
    }
   }
  }
  
 }
 trace("Cost : "+(getTimer()-startTime));
 return newBmp;
}

以上代码请用FLASH8编译执行.

时间: 2024-10-31 10:42:09

FLASH AS实现马赛克效果的相关文章

教你怎么样用Flash来制作马赛克效果

技术要点:duplicateMovieClip(复制命令),数组的应用,color的设置. 制作步骤: 1. 打开Flash MX,新建一个Flash电影文件,文件尺寸默认. 2. 按F8,新建一个电影夹属性的符号,命名为fg.选取矩形绘图工具绘制一个大小为1010的小方格,线条和填充颜色任意,x位置为0,y位置为0.按Ctrl+L,打开资料库窗口,可以看到资料库中fg符号. 3. 点击Sence1,进入主场景,再按F8,新建另一个电影夹属性的符号,命名为Mosaic.进入Mosaic的编辑界

用javascript实现的仿Flash广告图片轮换效果_javascript技巧

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Fireworks锐化马赛克效果

这篇文章源于版内某位朋友的这种格子有什么方法快速做出来么. 这里只是为大家提供一种思路,并不需要局限于某一效果.为了模仿而模仿是没有意义的. 效果图: 思路分析: 此图属于马赛克效果的范畴,然后加以混合模式上的调整.而Firewroks不同于PS,本身是没有马赛克滤镜的.所以关键的问题就在于马赛克效果的制作.在这里我们通过图片放大会失真出现马赛克的思路去解决马赛克的问题. 制作步骤: 1.新建一个200*200像素的画布,导入找好的素材: 2.将导入的素材原位复制一份,选中上层的素材: 3.对图

Flash实例下雨动画效果教程制作

  Flash实例下雨动画效果制作,是Flash考试中经常要考的内容,特为参加考试的考生策划了"Flash实例下雨动画效果教程 "专题等有关资料,供考生参考! 制作过程 一.新建一图层,大小随意; 二.新建元件(影片剪辑): 1.制作雨滴并下落.使用直线工具(颜色设为灰色,1像素)画一短直线,使用选择工具将直线移到上方(最好移到文档上面一点),在第15帧(要雨急则帧短,反之则长)处插入关键帧,并将直线向下移动,选择1至15帧之间任意一帧,选择属性下补间,选择形状.然后在第16帧处插入空

Flash图片滚动动画效果

图片不间断滚动是flash动画常用的效果,比如运动的背景等.这个效果的一个难点是可能产生的停顿,一些新手朋手总是处理不好这个问题,那么今天我们来做一个练习,让图片滚动起来,同时拒绝停顿. 1. 首先准备要滚动的图片,将几张图片导入到flash库中,分别在库中右击它们,选择属性,将"使用导入的JPEG品质"前的钩去掉,这样文档的体积会小很多. 点击 插入>新建元件,新建一图形元件,将库的图片拖到舞台上,首尾相接拼好. 2. 回到主场景,将图片元件拖到舞台上,打开对齐面板,选择相对舞

Photoshop简单快速给照片加锐化马赛克效果

  看到有人利用Fireworks锐化马赛克效果,觉得效果还真不错!其实用Photoshop也可以简单快速的制作这种效果,今天就给大家来一个例子. 方法/步骤 1.打开原图,按Ctrl+J复制图层: 2.选择:滤镜-->像素化-->马赛克(具体的数据我就不说了,自己设置) 3.选择:滤镜-->像素化-->碎片 4.选择:滤镜-->画笔描边-->成角的线条 5.选择:滤镜-->锐化-->锐化(连续三次) 6.修改模式和不透明 7.拼合图层,完成!! 以上就是P

photoshop做简单的像素马赛克效果制作教程

给各位photoshop软件的使用者们来详细的解析分享一下做简单的像素马赛克效果的制作教程. 教程分享: 先看看效果:   首先把图片拖至PS,复制一层,把哆啦A梦抠出来,滤镜-马赛克   把马赛克过的图层复制复制,直至图层层次分明   合并图层,可选颜色-中性色,加深加深直至黑白将近分明   细节处理看个人而定,完成   好了,以上的信息就是小编给各位photoshop的这一款软件的使用者们带来的详细的做简单的像素马赛克效果的制作教程解析分享的全部内容了,各位看到这里的使用者们现在是非常的清楚

flash 产品展示幻灯效果

一款js flash 产品展示幻灯效果,当鼠标指上图片时就会自动滚动,是一款不错的幻灯效果,喜欢的朋友拿去试一下吧. <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.111cn.net/1999/x

flash中实现场景转换中的马赛克效果

转换 PowrePoint里面很常用的效果,我说不出名字,姑且叫"马赛克渐变"效果吧. 就是图片方格化退去,显出另一幅图画.另一幅图画过了一会儿又方格化退去,显示下一张.如此循环.大家可以看看我的源文件先.里面用了三幅图.这个效果很实用,.您可以用在LOGO上或企业的产品宣传上,简单美观. 好了,闲话不说,介绍一下思路先. 我们的思路是:场景里一共有四个MC.最下面一层用做相框,不会用到,我们设深度为0;中间两层是真正要显示的图画,分别设深度为1,2,我们用"上层"