在位图中混合模式数据

时间:2012-05-28 17:58:10

标签: actionscript-3 flash bitmap

我正在开发一个从.swf文件中提取位图的查看器。它们都被定义为类,所以我可以使用它们:

getBitmap = event.target.applicationDomain.getDefinition(name);
getBitmap = new getBitmap;

这些是图像的所有不同部分,我要重建它。我差不多完成了,唯一缺少的是混合模式。现在,我不知道从哪里获得混合模式。某些部件只有正常的混合模式,并且有些部件具有不同的混合模式。

首先,我不知道是否有可能在位图中定义blendMode。有没有办法从中获取所有信息?

1 个答案:

答案 0 :(得分:1)

不可能,如果它实际上只是一个位图,这意味着它实际上是图像的地图,就像坐标到颜色值的笛卡尔坐标图,实际上是位图(关于图像位图)。其他格式的图像文件只是所述位图的编码版本,以减少大多数情况下的存储器大小(颜色可以是RGB或RGB加Alpha)。混合模式(在闪存中)是运行时多个对象之间的交互问题,也就是说如何根据多个对象的混合计算显示值。如果您这样选择,您可以在某个对象上设置混合模式,将其覆盖在另一个对象上,将生成的容器绘制到位图然后提取颜色信息,但是当您存储图像时,没有与其关联的混合模式的感觉(除非它是一些专有的格式,如PSD或其他东西,但没有任何常见的图像格式)。在位图的情况下,与“混合”相关的唯一值是alpha值,该值确定对象后面的颜色将影响该像素的显示颜色,或者该像素将影响颜色的程度它被搁置了。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BlendMode.html

^通知混合模式是DisplayObject的一个属性,BitmapData不会从中扩展,因此尽管有任何其他知识,但很明显BitmapData本身没有blendMode,你可以在blendMode上的BitmapData文档中找到唯一的信息。关于draw方法,在这种情况下,blendMode用于设置像素值,但随后不是BitmapData的可访问属性。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html

我想我会为更好的书呆子提供更多细节(那些毫无疑问因为我没有参考CMYK和色彩空间而烦恼)。我知道你可以使用其他颜色模型,例如CMYK,它是减色的而不是添加剂,是印刷中使用的方法,但是对于显示器,它全部被翻译成某种RGB,因为光以附加的性质工作。 RGB可以是8位又名256色,16位65,536色,24位16,777,216色或32位4,294,967,296色(如果包含A,则是另一个增加色彩空间的位深度因子,但A确实是与“混合”有关的唯一事情。我几乎肯定任何高于32位超出我们的阈值以区分,更不用说通过相对变化思维与视觉数据一起工作的方式它可能不如颜色之间的关系(对比度)重要。

除了颜色模型之外,还有颜色空间将值映射到显示的实际颜色(我的朋友告诉我,在某些版本的Android Honeycomb中调整了这个以减少某些人喜欢的饱和度,而其他人则被激怒了)。 / p>

这最终渗透到生物学和锥体和棒的研究中,以及光子如何刺激它们以及它们如何相互作用,然后这些信息如何在眼睛的神经束中被编码,如何通过视觉皮层发送并最终我们的大脑如何解释这些信号,由于所述生物学和头部发育的所有层次的差异,这在人类中是不同的。无论如何,这已经超出了我个人的专业书呆子领域的专业知识,所以如果他们愿意的话,我会让生物书呆子继续听。这里似乎是一个很好的解释:http://webvision.med.utah.edu/book/part-ix-psychophysics-of-vision/the-primary-visual-cortex/虽然它比我有时间深入研究需要更多的理解。

我感兴趣的另一部分是硬件能够准确地重新创建在应用颜色空间后确定的最终值。所有电子元件都有一定程度的误差/可变性(很像我们的眼睛/大脑),所以毫无疑问会出现基于硬件甚至工作温度和其他环境因素的差异。无论如何,我确信我现在已经陷入太深的深度,如果第一点没有回答你的问题,请告诉我。