在 Adobe Animate 中从矢量保存高分辨率位图
Posted
技术标签:
【中文标题】在 Adobe Animate 中从矢量保存高分辨率位图【英文标题】:Saving a high-resolution bitmap from vectors in Adobe Animate 【发布时间】:2019-01-16 02:33:23 【问题描述】:有没有办法让玩家保存游戏的高分辨率图像,同时仍然保持所有效果?例如,我将发光滤镜设置为 2px。当我使用常规的 drawBitmap 时,一切都是像素化的,并且过滤器看起来不太好。所以我开始将影片剪辑放大到两倍大小,然后创建一个两倍大小的位图并保存。但问题是过滤效果被缩小了。例如,如果图像的高度从 400 像素变为 800 像素,则 2 像素的滤镜效果现在看起来缩小了一半并扭曲了所有内容。
我知道这一定是可能的,因为例如,使用全屏功能已经可以做到这一点......它将所有内容放大到漂亮的高分辨率,同时保持所有效果相互关联。如何以图像保存能力捕捉这种效果? (目前使用jpegencoder)
【问题讨论】:
【参考方案1】:听起来你有一些混叠,所以你需要一个重新采样(混合)函数来修复那些锯齿状的边缘。
一个很好的例子是:Lanczos Resampler by Jozef Chúťka。
该演示代码的重要部分是 LanczosBitmapDataResizer
类代码,大约在页面向下滚动的一半。
import flash.display.BitmapData;
import flash.utils.Dictionary;
class LanczosBitmapDataResizer
...etc etc...
并且通过更新BitmapData
来访问它
new_smooth_BMD = LanczosBitmapDataResizer.resize( old_pixelated_BMD, 227, 227 );
【讨论】:
据我了解,这需要一个小位图并将其调整为更大?但它会即兴创作中间像素,对吧?由于 Flash 使用矢量图形,因此应该可以从矢量图形创建无限大的位图,而无需破解更大的分辨率。我喜欢这种创意,但目前将 MC 大小加倍的解决方案仍然比调整大小的位图更可取... 但话虽如此,我实际上也在经历像素化,但它处于 draw() 级别,在调整大小甚至成为问题之前。如果有任何替代 draw() 可以更平滑地渲染过滤器,那将减少对更大图片的需求,而不是消除它,但会有所帮助。起初我以为这就是这样做的,但后来我意识到这是一个调整大小以上是关于在 Adobe Animate 中从矢量保存高分辨率位图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Adobe Animate 中悬停时反向播放动画?
jQuery 替代 Adobe Edge Animate?
For 循环无法在 Adobe Animate CC 中创建多个矩形