flash - 从 Photoshop 到 Flash 具有透明度的 PNG : how to make . swf 显示 .psd 究竟是做什么的?

标签 flash graphics png photoshop alpha-transparency

我在 Photoshop 中有两层:1——一个纹理,2——一个与纹理重叠的半透明图像。两者的结合在 Photoshop 中看起来不错。我将它们与 Photoshop 分开导出,将它们另存为 24 位 PNG,并将透明度和颜色转换为 sRGB。 (PS的工作色彩空间为sRGB。)

将它们导入 flash 的结果让我哭了(见下图,注意十字架周围的区域是什么样的)。 :(

我尝试动态加载 PNG 并直接将它们导入 fla(压缩类型:lossles,允许平滑:false)。看起来半透明区域在导出时保存不准确。更令我困惑的是,为什么动态加载和直接导入的结果不同。

我错过了什么?对这些症状的深入解释将不胜感激。

编辑1 这是我坚持的那个psd。在 zipper 内,您会找到 透明.psd ,它只有两层。我仍然没有运气将它们放入 fla:透明区域会变脏。

http://noregret.org/test/transparency.zip (400 KB)

编辑2 一位 Flash 开发人员向我指出了“ 预乘 alpha 问题 ”。

http://en.wikipedia.org/wiki/Alpha_compositing#Description

我想这一定是我正在努力克服的问题。

据我所知,Photoshop 在内部使用直接 alpha(在 PNG 导出时与白色预乘)和 Flash uses premultiplied alpha .但我还是不明白:透明图像的渲染有什么不同?而且我仍然不知道我需要执行哪些操作才能使 PS 和 Flash 中的内容看起来相同(或者至少我如何指导我们的艺术家准备图像)。

任何人?我正在继续挖掘谷歌的答案。

编辑3 不幸的是,我不能扁平化图像 .这个例子只是大图的一小部分。我有一个相当复杂的界面,在纹理之上有很多半透明元素。图片看起来很酷(就像它是由皱巴巴的纸板或其他东西制成的)。所以,我需要单独的纹理和半透明布局。在flash的顶层添加blendmode确实解决了“重影区域”的问题,但也显着改变了画面,这是 Not Acceptable 。

半透明层:

enter image description here

纹理层:

enter image description here

结果(Windows 上 PS 和 Flash Player 的截图):

  • Photoshop(原版):好的
  • Flash(导入到fla):重鬼区
  • Flash(png加载):光鬼区

  • enter image description here

    最佳答案

    看起来您在 FLA 中获得带有压缩的 JPEG 图像格式,而不是 PNG。为了避免这种情况,您需要指定您的图像压缩应该是无损的。您可以在库或 MovieClip Prop 中执行此操作。

    关于flash - 从 Photoshop 到 Flash 具有透明度的 PNG : how to make . swf 显示 .psd 究竟是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6571187/

    相关文章:

    css - 如何在 CSS 中更改背景颜色的不透明度

    javascript - 动态更改图像颜色区域的建议

    c++ - lodepng 正在向 cout 打印 `1`,如何阻止它?

    actionscript-3 - 单词 "prototype"在 ActionScript 中是什么意思?

    c++ - 中点粗椭圆绘制算法

    java - 如何在调整大小时重新绘制所有 JPanel?

    java - 写入图像位掩码

    javascript - 延迟启动 Flash 电影并自动播放?

    Flex 移动应用程序中的 iOS 7 操作栏外观

    javascript - 在 IE 和 FireFox 中播放 Flash 的 XSLT 问题