在 Adob​​e Animate 中从矢量保存高分辨率位图

Posted

技术标签:

【中文标题】在 Adob​​e 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() 可以更平滑地渲染过滤器,那将减少对更大图片的需求,而不是消除它,但会有所帮助。起初我以为这就是这样做的,但后来我意识到这是一个调整大小

以上是关于在 Adob​​e Animate 中从矢量保存高分辨率位图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Adob​​e Animate 中悬停时反向播放动画?

jQuery 替代 Adob​​e Edge Animate?

For 循环无法在 Adob​​e Animate CC 中创建多个矩形

错误函数场景 Adob​​e Animate 语法错误

如何在 Adob​​e Animate CC 中使用舞台宽度和高度(Canvas doc)

无法在 Adob​​e Edge animate CC 中创建圆形阴影