Smoothing in Flash won’t work with every image. This is a bit of an old discovery, but yesterday I ran again into this issue and I had the luck to recall what was the reason for it, and decided to document it in my blog in case I run again into this issue.
Almost two years ago my colleague Barni and I literally spent half a day in finding what causes this behavior. We’ve tried everything - drawing the loaded bitmap into a new BitmapData-object with the smoothing argument set to true, but with no luck. And then it suddenly struck us - it was the image dimensions. Images that have an odd dimension(s) fail to be smoothed. Check the sample app beneath - choose a different image from the combo and observe whether the smoothing works for it:
The Solution
The solution is to create a new BitmapData-object that is always with even dimensions.
var smoothBitmapData : BitmapData = new BitmapData(
loadedBitmap.width + (loadedBitmap.width % 2),
loadedBitmap.height + (loadedBitmap.height % 2),
true, 0x00FF0000);
smoothBitmapData.draw(
loadedBitmap, null, null, null, null, true);
smoothBitmap = new Bitmap(
smoothBitmapData, PixelSnapping.NEVER, true);
This is how it looks with the fix:





4 Comments
Thanks! I have been pulling my hair out trying to figure out why my image wouldn’t smooth!
If found another “solution” which is to display the image at a scale of 0.999. This also forces smoothing for some reason.
Thank you for sharing this.
Thanks henk for the additional solution.
Man, that must have been incredibly frustrating.
great tip, thanks for sharing.
Incoming Links
Leave a Reply