青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

misschuer

常用鏈接

統(tǒng)計

積分與排名

百事通

最新評論

as 圖片的縮放算法 (二次線性 和 三次卷積)

package {

import flash.display.BitmapData;
public class ImageScaling {
public static var PI:Number = Math.PI;
public static function getA(val:uint):uint {
return val >>> 24;
}
public static function getR(val:uint):uint {
return (val & 0x00ffffff) >>> 16;
}
public static function getG(val:uint):uint {
return (val & 0x0000ffff) >>> 8;
}
public static function getB(val:uint):uint {
return val & 0x000000ff;
}
public static function getAA(val:Array):Array {
var ret:Array = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];
for (var i:uint = 0; i < 4; ++ i) {
for (var j:uint = 0; j < 4; ++ j) {
ret[ i ][ j ] = val[ i ][ j ] >>> 24;
}
}
return ret;
}
public static function getRR(val:Array):Array {
var ret:Array = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];
for (var i:uint = 0; i < 4; ++ i) {
for (var j:uint = 0; j < 4; ++ j) {
ret[ i ][ j ] = (val[ i ][ j ] & 0x00ffffff) >>> 16;
}
}
return ret;
}
public static function getGG(val:Array):Array {
var ret:Array = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];
for (var i:uint = 0; i < 4; ++ i) {
for (var j:uint = 0; j < 4; ++ j) {
ret[ i ][ j ] = (val[ i ][ j ] & 0x0000ffff) >>> 8;
}
}
return ret;
}
public static function getBB(val:Array):Array {
var ret:Array = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];
for (var i:uint = 0; i < 4; ++ i) {
for (var j:uint = 0; j < 4; ++ j) {
ret[ i ][ j ] = (val[ i ][ j ] & 0x000000ff);
}
}
return ret;
}
public static function availablePixel (bitmapData:BitmapData, x:uint, y:uint):uint {
var flag:Boolean = true;
if (x < 0) { x = 0; flag = false; }
else if (x >= bitmapData.width) { x = bitmapData.width - 1; flag = false; }
else if (y < 0) { y = 0; flag = false; }
else if (y >= bitmapData.height) { y = bitmapData.height - 1; flag = false; }
var ret:uint = bitmapData.getPixel32(x, y);
if (!flag) ret = ret & 0x00ffffff;
return ret;
}
public static function SinXDivX(x:Number):Number {
var a:Number = -1;
if (x < 0) x = -x;
var x2:Number = x*x;
var x3:Number = x2*x;
if (x <= 1)
return (a + 2) * x3 - (a + 3) * x2 + 1;
else if (x <= 2) 
return a * x3 - 5 * a * x2 + 8 * a * x - 4 * a;
return 0;
}
public static function getPixels(a:Array, b:Array, c:Array):uint {
var arfa:Array = ImageScaling.getAA(b);
var R:Array = ImageScaling.getRR(b);
var G:Array = ImageScaling.getGG(b);
var B:Array = ImageScaling.getBB(b);
var aa:uint = ImageScaling.MatrixMutiple(a, arfa, c) << 24;
var rr:uint = ImageScaling.MatrixMutiple(a, R, c) << 16;
var gg:uint = ImageScaling.MatrixMutiple(a, G, c) << 8;
var bb:uint = ImageScaling.MatrixMutiple(a, B, c);
//trace (aa + " " + rr + " " + gg + " " + bb);
return aa + rr + gg + bb;
}
public static function border_color(Color:Number):uint {
if (Color <= 0) return uint(0);
if (Color >= 255) return uint(255);
return uint(Color);
}
public static function MatrixMutiple(a:Array, b:Array, c:Array):uint {
var ret:Number = 0;
for (var i:int = 0; i < 4; ++ i) {
var tmp:Number = 0;
for (var j:int = 0; j < 4; ++ j) {
tmp += a[ j ] * b[ j ][ i ];
}
ret += c[ i ] * tmp;
}
return border_color(ret + 0.5);
}
public static function thirdConvolution (bitmapData:BitmapData, scalingWidth:uint, scalingHeight:uint):BitmapData {
var widthFactor:Number = bitmapData.width / scalingWidth;
var heightFactor:Number = bitmapData.height / scalingHeight;
var i:uint = 0, j:uint = 0;
var nbd:BitmapData = new BitmapData(scalingWidth, scalingHeight, true, 0xffffffff);
for (i = 0; i < scalingWidth; ++ i) {
for (j = 0; j < scalingHeight; ++ j) {
var tx:Number = (i + 0.5) * widthFactor - 0.5;
var ty:Number = (j + 0.5) * heightFactor - 0.5;
if (tx < 0) tx = -tx;
if (ty < 0) ty = -ty;
var x:uint = Math.floor(tx);
var y:uint = Math.floor(ty);
var u:Number = tx - x;
var v:Number = ty - y;
var A:Array = [0.0, 0.0, 0.0, 0.0]; 
var B:Array = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]; 
var C:Array = [0.0, 0.0, 0.0, 0.0];
for (var k:int = 0; k < 4; ++ k) {
A[ k ] = ImageScaling.SinXDivX(u+1.0-k);
C[ k ] = ImageScaling.SinXDivX(v+1.0-k);
for (var z:int = 0; z < 4; ++ z) {
B[ k ][ z ] = ImageScaling.availablePixel(bitmapData, x+k-1, y+z-1);
}
}
var p:uint = ImageScaling.getPixels(A, B, C);
nbd.setPixel32(i, j, p);
}
}
return nbd;
}
public static function calculator(p:Array, c:Array):uint {
return uint(p[0]*c[0]+p[1]*c[1]+p[2]*c[2]+p[3]*c[3]);
}
public static function mixedPixel(p:Array, c:Array):uint {
var aa:Array = [0, 0, 0, 0];
var ra:Array = [0, 0, 0, 0];
var ga:Array = [0, 0, 0, 0];
var ba:Array = [0, 0, 0, 0];
for (var i:uint = 0; i < 4; ++ i) {
aa[ i ] = ImageScaling.getA(p[ i ]);
ra[ i ] = ImageScaling.getR(p[ i ]);
ga[ i ] = ImageScaling.getG(p[ i ]);
ba[ i ] = ImageScaling.getB(p[ i ]);
}
return (ImageScaling.calculator(aa, c) << 24) + (ImageScaling.calculator(ra, c) << 16) + (ImageScaling.calculator(ga, c) << 8) + ImageScaling.calculator(ba, c);
}
public static function secondLinear (bitmapData:BitmapData, scalingWidth:uint, scalingHeight:uint):BitmapData {
var widthFactor:Number = bitmapData.width / scalingWidth;
var heightFactor:Number = bitmapData.height / scalingHeight;
var i:uint = 0, j:uint = 0;
var nbd:BitmapData = new BitmapData(scalingWidth, scalingHeight, true, 0xffffffff);
for (i = 0; i < scalingWidth; ++ i) {
for (j = 0; j < scalingHeight; ++ j) {
var tx:Number = i * widthFactor - 0.5;
var ty:Number = j * heightFactor - 0.5;
if (tx < 0) tx = -tx;
if (ty < 0) ty = -ty;
var x:uint = Math.floor(tx);
var y:uint = Math.floor(ty);
var u:Number = tx - x;
var v:Number = ty - y;
var ti:uint = x;
var tj:uint = y;

var p0:uint = ImageScaling.availablePixel(bitmapData, x, y);
var p1:uint = ImageScaling.availablePixel(bitmapData, x, y+1);
var p2:uint = ImageScaling.availablePixel(bitmapData, x+1, y);
var p3:uint = ImageScaling.availablePixel(bitmapData, x+1, y+1);
var pa:Array = [p0, p1, p2, p3];
var c0:Number = (1.0-u)*(1.0-v);
var c1:Number = (1.0-u)*v;
var c2:Number = u*(1.0-v);
var c3:Number = u*v;
var ca:Array = [c0, c1, c2, c3];
nbd.setPixel32(i, j, ImageScaling.mixedPixel(pa, ca));
}
}
return nbd;
}
}
}

測試:
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Rectangle;
import flash.system.ImageDecodingPolicy;
import flash.utils.ByteArray;

[SWF(width="1000", height="600", backgroundColor="#cacaca", frameRate="24")]
public class Main extends Sprite {
[Embed(source='dog.png')]
public static const image:Class;
public function Main() {
var bitmapdata:BitmapData = (new image() as Bitmap).bitmapData
var bitmap:Bitmap = new Bitmap(showImage2(bitmapdata));
bitmap.x = 0;
bitmap.y = 0;
this.addChild(bitmap);
var bitmap2:Bitmap = new Bitmap(showImage1(bitmapdata));
bitmap2.x = 300;
bitmap2.y = 300;
this.addChild(bitmap2);
}
public static function showImage1(bitmapdata:BitmapData):BitmapData {
return ImageScaling.secondLinear(bitmapdata, 286, 300);
}
public static function showImage2(bitmapdata:BitmapData):BitmapData {
return ImageScaling.thirdConvolution(bitmapdata, 286, 300);
}
}
}



__________________________________________________
參考h ttp://blog.csdn.net/housisong/article/details/1452249 

posted on 2012-08-07 09:58 此最相思 閱讀(502) 評論(0)  編輯 收藏 引用 所屬分類: as

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久亚洲综合色| 欧美激情2020午夜免费观看| 一本久道久久综合狠狠爱| 亚洲视频在线观看一区| 老巨人导航500精品| 亚洲美洲欧洲综合国产一区| 香蕉国产精品偷在线观看不卡| 美女视频网站黄色亚洲| 国产日韩一区二区三区在线播放| av成人手机在线| 一区二区三区高清| 欧美另类专区| 亚洲激情视频在线| 美女尤物久久精品| 久久国产精品99国产精| 国产伦精品一区二区三区四区免费| 欧美精品一区二区三区在线播放 | 欧美视频免费在线| 亚洲激情视频在线播放| 99精品热6080yy久久 | 一本高清dvd不卡在线观看| 欧美午夜国产| 亚洲深夜av| 久久成人18免费网站| 91久久久久久久久| 米奇777在线欧美播放| 欧美激情国产日韩精品一区18| 1769国产精品| 欧美国产综合| 国产麻豆日韩| 亚洲人www| 欧美专区在线| 中日韩美女免费视频网址在线观看| 亚洲欧美日韩精品久久亚洲区| 亚洲国产成人91精品 | 亚洲午夜视频在线| 亚洲电影在线播放| 国产精品久久久久久久久果冻传媒 | 欧美顶级少妇做爰| 亚洲精品国产系列| 亚洲人体影院| 在线免费观看视频一区| 亚洲在线观看免费| 黑丝一区二区| 亚洲国产91精品在线观看| 久久亚洲不卡| 亚洲视频一区二区| 免费视频久久| 在线亚洲自拍| 午夜伦欧美伦电影理论片| 正在播放欧美一区| 欧美www视频| 另类激情亚洲| 一区二区三区在线视频观看| 亚洲成人在线视频播放| 另类尿喷潮videofree| 99re66热这里只有精品3直播 | 欧美大色视频| 欧美日韩在线视频观看| 91久久亚洲| 国产美女诱惑一区二区| 中文一区字幕| 午夜视频在线观看一区| 久久免费99精品久久久久久| 亚洲欧洲一区| 亚洲欧美日韩视频一区| 亚洲少妇在线| 国产精品国产三级国产专播品爱网 | 日韩写真在线| 野花国产精品入口| 欧美人在线观看| 亚洲精品少妇网址| 国产精品s色| 99精品欧美一区| 亚洲婷婷综合色高清在线| 欧美午夜电影一区| 亚洲欧美日韩精品一区二区 | 久久精品亚洲乱码伦伦中文| 欧美成人免费va影院高清| 欧美国产日韩一区二区| 在线免费观看日本欧美| 欧美成年人视频网站| 欧美激情一区在线| 欧美激情网友自拍| 久久人人爽人人爽爽久久| 欧美日韩美女| 亚洲国产精品成人综合色在线婷婷| 国产精品久久毛片a| 亚洲国产精品123| 一区二区欧美亚洲| 国产美女扒开尿口久久久| 久久成人18免费网站| 亚洲国产日本| 亚洲欧美视频一区二区三区| 国产一区二区精品久久91| 亚洲已满18点击进入久久| 欧美专区日韩视频| 亚洲激情电影在线| 欧美日韩一区二区在线| 极品尤物久久久av免费看| 久久婷婷国产综合国色天香| 亚洲国产精品悠悠久久琪琪| 亚洲天堂久久| 国产综合欧美| av不卡在线| 久久久国产午夜精品| 国产精品久久久久久久久搜平片 | 国产区日韩欧美| 亚洲男女自偷自拍| 欧美一区二区精品在线| 国产精品拍天天在线| 一本到12不卡视频在线dvd| 美女日韩在线中文字幕| 亚洲欧美国产精品专区久久| 久久久欧美精品| 西西人体一区二区| 国产精品日日摸夜夜添夜夜av| 久久精品国产99国产精品| 一区电影在线观看| 亚洲电影在线播放| 蜜臀av国产精品久久久久| 亚欧成人精品| 亚洲永久免费| 国产在线精品成人一区二区三区| 欧美精品成人| 免费成人在线观看视频| 久久国产直播| 午夜亚洲伦理| 午夜精品久久一牛影视| 中文国产成人精品久久一| 亚洲精品永久免费| 亚洲国产精品一区二区久| 久久综合伊人| 久久久午夜电影| 久久av免费一区| 久久gogo国模啪啪人体图| 亚洲欧美成aⅴ人在线观看| 一二三区精品福利视频| 日韩视频久久| 国产日韩亚洲欧美精品| 国产精品高潮呻吟久久av无限| 欧美日韩一区二区三区在线| 欧美另类高清视频在线| 欧美激情一区二区| 欧美激情女人20p| 欧美日韩国产一区二区三区地区| 亚洲免费综合| 欧美一区二区三区播放老司机| 女女同性精品视频| 亚洲男人的天堂在线aⅴ视频| 亚洲精品在线视频| 欧美日韩国产综合视频在线观看| 欧美黄色免费网站| 欧美日韩精品三区| 国产精品成人免费| 国产日韩精品入口| 狠狠v欧美v日韩v亚洲ⅴ| 在线日韩中文字幕| 亚洲乱码日产精品bd| 中日韩在线视频| 欧美一区二区在线播放| 久久久久久伊人| 亚洲国产美国国产综合一区二区| 亚洲福利视频三区| 亚洲深夜福利在线| 久久久999精品免费| 亚洲一品av免费观看| 亚洲理论在线观看| 亚洲欧美国产制服动漫| 久久精品国产亚洲精品| 欧美国产日韩一区二区| 国产精品第三页| 国内揄拍国内精品久久| 亚洲美女视频| 欧美一区二区三区四区在线观看地址 | 久久久免费精品| 亚洲国产精品尤物yw在线观看 | 亚洲激情一区二区| 亚洲欧美日韩精品综合在线观看| 久久精品亚洲一区二区| 欧美日韩国产999| 国产丝袜一区二区| 一本色道久久99精品综合| 欧美亚洲综合久久| 最新中文字幕亚洲| 久久丁香综合五月国产三级网站| 欧美激情91| 红桃视频国产精品| 亚洲欧美色一区| 亚洲激情影视| 久久精品最新地址| 国产精品高潮呻吟久久av无限| 亚洲经典一区| 久久三级福利| 亚洲性图久久| 欧美日韩国产成人在线91| 在线成人亚洲| 亚洲美洲欧洲综合国产一区| 久久久国产一区二区| 亚洲欧美日韩在线综合|