我正在开发一个从.swf文件中提取位图的查看器。它们都被定义为类,所以我可以用以下命令获取它们:
getBitmap = event.target.applicationDomain.getDefinition(name);
getBitmap = new getBitmap;这些都是镜像的不同部分,我必须重建它。我几乎完成了,唯一缺少的就是混合模式。现在,我不知道从哪里得到混合模式。有些零件只有普通混合模式,而有些零件有不同的混合模式。
首先,我不知道是否有可能在位图中定义blendMode。有没有办法从里面获取所有的信息?
发布于 2012-05-29 02:22:27
不,如果它实际上只是一个位图,这意味着它实际上是图像的映射,就像坐标到颜色值的笛卡尔图一样,这实际上是一个位图(好吧,关于图像位图)。其他格式的图像文件是所述位图的简单编码版本,以在大多数情况下减小存储器大小(颜色可以是RGB或RGB加Alpha)。混合模式(在flash中)是运行时多个对象之间的交互问题,即如何根据多个对象的混合来计算显示值。如果你这样选择,你可以在一些对象上设置混合模式,将其叠加在另一个对象上,将生成的容器绘制到位图上,然后提取颜色信息,但是当你存储图像时,没有与其相关的混合模式的感觉(除非它是一些专有格式,如PSD或其他格式,但不是任何常见的图像格式)。在位图的情况下,与“混合”相关的唯一值是alpha值,它确定对象后面的颜色对该像素的显示颜色有多大影响,或者更确切地说,该像素对其覆盖的颜色有多大影响。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BlendMode.html
^请注意,混合模式是DisplayObject的一个属性,BitmapData不是从它扩展而来的,因此,尽管有任何其他知识,但很明显,BitmapData本身没有blendMode。在blendMode上的BitmapData文档中,您可以找到的唯一一点信息是关于绘制方法的,在这种情况下,blendMode用于设置像素值,但随后不是BitmapData的可访问属性。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html
我只是想为超级书呆子们抛出更多细节(他们无疑会因为我缺乏对CMYK和色彩空间的引用而感到不安)。我知道你可以使用其他颜色模型,如CMYK,它是减法而不是加法,是印刷中使用的方法,但是对于显示器,它都被转换为某种RGB,因为光在加法性质下工作。RGB可以是8位AK256色、16位65,536色、24位16,777,216色或32位4,294,967,296色(如果包含A,它是增加颜色空间的另一个位深度因子,然而A实际上是唯一与“混合”相关的东西)。我几乎可以肯定,任何高于32位的东西都超过了我们的辨别阈值,更不用说大脑通过相对变化处理视觉数据的方式了,它可能没有颜色之间的关系(对比度)那么重要。
除了颜色模型之外,还有颜色空间可以将值映射到实际显示的颜色(我的一个伙伴告诉我,这是在某些版本的Android Honeycomb中进行了调整,以降低饱和度,这让一些人喜欢,另一些人则感到愤怒)。
这最终渗透到生物学和对锥体和视杆的研究中,以及光子如何刺激它们以及它们如何相互作用,然后这些信息如何在眼睛的神经束中编码,如何通过视觉皮层发送,最终我们的大脑如何解释这些信号,这在人类之间是不同的,因为上述生物学和头部发育的各个层面都不同。无论如何,这已经超出了我个人书呆子的专业领域,所以如果生物书呆子愿意的话,我将把它留给他们自己去扩展。这里似乎有一个很好的解释:http://webvision.med.utah.edu/book/part-ix-psychophysics-of-vision/the-primary-visual-cortex/,尽管它需要更多的理解,而我没有时间去钻研。
我感兴趣的另一个部分是硬件在应用颜色空间后能够准确地重新创建最终确定的值。所有电子元件都有一定程度的误差/可变性(很像我们的眼睛/大脑),因此毫无疑问,会有基于硬件的差异,甚至是操作温度和其他环境因素。无论如何,我确信我现在已经陷入了太深的境地,如果第一个部分没有回答你的问题,请告诉我。
https://stackoverflow.com/questions/10788697
复制相似问题