【问题标题】:Scaling down a bitmap makes it look worse?缩小位图会使它看起来更糟?
【发布时间】:2014-07-31 19:42:04
【问题描述】:

我在 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(timestamp) 图像看起来非常糟糕。

overlayscale 设置为 1,

overlayscale 设置为 0.5 时:

如何在不丢失所有细节的情况下保持“质量”?

【问题讨论】:

  • 尝试将这些 BMD 放入位图对象并启用平滑处理。

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


【解决方案1】:

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

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的一些魔法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2018-01-17
    • 1970-01-01
    • 2011-06-25
    相关资源
    最近更新 更多