gpt4 book ai didi

apache-flex - Flash 中的快速双三次或双线性图像调整大小 - Flex - actionscript 3

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:35 25 4
gpt4 key购买 nike

我需要在 actionscript 中调整图像大小以保持质量,即双三次或双线性调整大小。目前我的算法只是循环遍历每个像素并计算新像素。示例:

            /* Loop through the pixels of the output image, fetching the equivalent pixel from the input*/
for (var x:int = 0; x < width; x++) {
for (var y:int = 0; y < height; y++) {
bitmapDataTemp2.setPixel(x, y, newBitmapData2.getPixelBilinear(x * xFactor, y * yFactor));
//bitmapDataTemp2.setPixel(x, y, newBitmapData2.getPixelBicubic(x * xFactor, y * yFactor));
}
}

这真的很慢而且可耻的是 Flash 播放器中没有多线程,所以我想知道我可以使用什么技巧来加快播放速度?

非常感谢。

最佳答案

您应该使用 BitmapData.setVector() 而不是 setPixel。看看这个例子:

var canvas:BitmapData=new BitmapData(255,255,false,0x000000);
addChild(new Bitmap(canvas, "auto", true));
 
var size:int = canvas.width * canvas.height;
var cols:int = canvas.width;
 
var pixels:Vector.<uint> = new Vector.<uint>(size);
 
canvas.lock();
for (var i:int  = 0; i<size; i++) {
    var ox:uint= i % cols;
    var oy:uint= i / cols;
// just an example of what you can do:
    // pixels[i] = oy <<16 | ox;
pixels[i] = newBitmapData2.getPixelBilinear(ox * xFactor, oy * yFactor);
}
   
canvas.setVector(canvas.rect, pixels);
canvas.unlock();

您应该考虑内联 newBitmapData2.getPixelBilinear 函数。这样做也会显着加快速度。

关于apache-flex - Flash 中的快速双三次或双线性图像调整大小 - Flex - actionscript 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com