缩小位图使其看起来更糟糕?

时间:2014-07-31 19:42:04

标签: actionscript-3 flash bitmap flash-builder image-scaling

我在AS3中有这个,打算截取您的网络摄像头并在其上显示时间戳

var width = 196;
var height = 147;
var screenshot:BitmapData = new BitmapData(width,height,false);
var overlay:BitmapData = new BitmapData(90,90,false);


var m:Matrix = new Matrix();
var m2:Matrix = new Matrix();
var scale:Number = 1;
m.scale(width/(myCam.width),height/(myCam.height)); //Scale for thumbnail.
m2.scale(scale,scale); //scale for timeRect
overlay.draw(timeGroup,m2);
screenshot.draw(VD1,m); //a 400x300 image
screenshot.merge(overlay,new Rectangle(0,0,timeRect.width*scale,timeRect.height*scale),new Point(width-(timeRect.width*scale)+1, height-(timeRect.height*scale)+1), 256, 256, 256, 256);

因为我故意将400x300图像缩小为196x147,所以它看起来比平时更糟糕,但是可以通过。

但是,如果我调整scale变量,我与屏幕截图合并的overlay(时间戳)图片看起来非常糟糕。

overlay设置为1时

scale

enter image description here

overlay设置为.5时

scale

enter image description here

我如何保持"质量"没有丢失所有细节?

1 个答案:

答案 0 :(得分:0)

Fisrt,尝试在smoothing方法中使用draw参数。

draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void

其次,当您使用低比例因子进行缩放时,您可以尝试按几个步骤进行缩放(结果会更平滑)。类似的东西(伪代码):

            bigImageBD = scaleImage(sourceImageBitmapData, bigScaleFactor, BIG_IMAGE_WIDTH, BIG_IMAGE_HEIGHT);
            smallImageBD = scaleImage(bigImageBD, smallScaleFactor, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);

最后一个,来自similar question的一些魔法。