详细描述
参考其中相同的标号表示相同的元素的各个附图,图1是根据一示例实施例的计算设备100的框图。根据一示例实施例,可以在计算系统100或其它计算系统中实践或实现各个实施例。计算系统100可以包括,例如,膝上型计算机、台式计算机、个人计算机(PC)、服务器、网络设备(例如,交换机、路由器)、蜂窝电话、个人数字助理(PDA)、游戏设备、手持式通信设备、或其它计算设备。这仅仅是一些示例,故各实施例并不限于此。
系统100可以包括中央处理单元(“CPU”)102、包括随机存取存储器106(“RAM”)和只读存储器108(“ROM”)的系统存储器104。CPU 102可以解释指令并处理计算机应用程序中的数据。例如,CPU 102可以是微处理器且包括多个集成电路,并且可以执行软件或指令并向计算系统100提供总体控制。RAM 106可以允许以任何顺序访问存储在该RAM上的数据,系统100还可以例如向RAM 106写入或从其中读取。例如,数据文件可在时刻X被存储在RAM 106上,并且在时刻Y该数据文件可从RAM 106中读取。ROM 108可以包含可由系统100从ROM 108中读取的数据或系统(与一般可由系统100向其写入或从中读取的RAM 106形成对比)。例如,ROM 108可以包括在系统100首次上电时系统100所运行的基本输入/输出系统(BIOS)软件代码。ROM 108还可以例如被耦合到时钟110。时钟110例如可以通过ROM 108向系统100提供时间。
系统100还可以包括输入/输出控制器128和显示设备130。输入/输出(I/O)控制器128可以接口到一个或多个I/O设备,如显示设备130。输入/输出控制器128可以例如向显示设备130提供输出。显示设备130可以是被配置为从输入/输出控制器128接收数据并向用户提供或显示该数据的设备。虽然并未示出,但输入/输出控制器128还可以被耦合到各种输入设备,如键盘、鼠标、操纵杆或被配置为向系统100提供输入的任何其它输入设备。
系统100还可以包括存储数据、指令或其它信息的数据存储设备114。数据存储设备114可以是,例如在磁面上存储数据的硬盘驱动器、CD-ROM、或可由系统100访问的任何其它可用媒体存储设备。
作为示例而非限制,数据存储设备114可以包括任何计算机可读介质。计算机可读介质可以例如包括计算机存储介质和通信介质。计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的介质。计算机存储介质包括但不限于,RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术、CD-ROM、DVD或其它光学存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其它介质。
一个或多个软件程序或块可被存储在数据存储设备114中,如应用程序116、图像处理器118、操作系统120和栈122。应用程序116可以是web浏览器、文字处理程序、多媒体应用程序或其它应用程序。例如,应用程序116可以是例如被配置为发送图像和图像处理(或加工)命令并接收包括一个或多个实现的经处理的图像的图像处理应用程序。例如,应用程序116可以基于用户输入发送和接收图像、处理命令、经处理的图像、和/或实现。例如,应用程序116可以从数码相机接收图像。随后,例如,应用程序116可以将该图像发送到图像处理器118以执行变换,如翻转/旋转变换,其后图像处理器118可以将包括实现216的经处理的图像214返回给应用程序116。
图像处理器118可以是执行图像处理的程序。例如,图像处理器118可以是被配置为接收图像和图像处理命令并基于该命令在所接收到的图像上执行一个或多个变换以生成该图像的一个或多个实现的应用程序。例如,图像处理器118可以接收图像和旋转该图像的命令。图像处理器118随后可以执行旋转并输出包括经旋转的图像实现的经处理的图像。
操作系统120可以是管理系统100的硬件和软件的软件程序,且可以是任何类型的操作系统。例如,操作系统可以是Microsoft Windows、Linux等。栈122可以是用来存储来自数据存储设备114的数据的临时数据结构。例如,该栈可以存储从应用程序116到图像处理器118的图像和对应的处理命令,图像处理器118随后可以访问存储在栈122上的各项。
根据一示例实施例,系统100可以使用逻辑连接通过诸如作为示例的TCP/IP网络124等网络与远程计算机进行通信而在网络化环境中操作。例如,TCP/IP网络124可以是因特网、公司内联网、局域网、无线网络、广域网、和/或任何其它网络。系统100可以通过网络接口单元126与TCP/IP网络124进行通信。网络接口单元126可以是被配置为允许系统100与TCP/IP网络124进行通信的设备和/或软件程序。例如,网络接口单元126可以是网卡、网络接口控制器(NIC)、调制解调器、或任何其它通信启用设备。
系统总线112可被耦合到CPU 102、系统存储器104、数据存储设备114、网络接口单元126、和输入/输出控制器128。系统总线112可以允许在两个或更多系统组件之间传输数据。例如,系统总线112可以允许向以及从系统存储器104和CPU 102中传输数据。系统总线112还可以例如将系统100的其它部分耦合在一起,如将数据存储设备114耦合到输入输出控制器128。
图2是根据另一示例实施例的系统200的框图。如上所述,系统200可以包括应用程序116和图像处理器118。例如,应用程序116可被配置为向图像处理器118经由线204提供图像202以及经由线208提供图像加工(或图像处理)命令206。图像202和处理命令206可由例如应用程序116通过将命令和一个或多个参数传递给图像处理器118来提供。
图像处理器118可以是被配置为接收图像202和处理命令206的软件程序和/或设备。图像处理器118可以通过例如实例化解码器对象220和诸如变换对象222、224、226、228等一个或多个变换对象来对图像202执行处理命令206,并提供包括该图像的一个或多个实现(216、218)的一个或多个经处理的图像214。以此方式,作为示例,图像处理器118可以基于处理命令206来处理图像202以提供该图像的一个或多个实现,如实现216、218。
图像202可以在特定文件类型203的文件中。文件类型203可以是文件格式或压缩图像数据的方法且可以是任何可接受的文件类型,如光栅图形文件类型、数字文件类型、或其它文件类型。例如,文件类型203可以是JPEG、图形交换格式(GIF)、可移植网络图形(PNG)、原始(或未编码的)或任何其它文件类型。图像202可以在包括任何可接受的文件类型203的文件中。图像202还可以包括一个或多个图像。每一图像还可以包括图像(或像素)格式205。例如,图像格式205可以是RGB、CMYK、YCbCr或任何其它色彩空间或像素格式。
处理命令206可以是单个处理命令206或多个处理命令。处理命令206可以包括,例如,变换值210、实现值212或两者。处理命令206可以与图像202相关联。变换值210可以例如指示要在图像上执行哪一(些)变换,且还可以指示指定的变换应用顺序。变换可以是可在图像202上执行的任何可能的修改或处理,包括但不限于,例如,缩放器变换、格式转换器变换、和/或翻转/旋转器变换。也可以使用附加的和/或不同的变换。
实现值212可以标识实现的数目,和/或可以标识将由图像处理器118输出的实现和/或经处理的图像。实现216、218每一个都可以是在对图像202应用一个或多个变换之前或之后的该图像202的一个版本。实现值212还可以例如指示对哪一实现216、218执行哪些变换,以及还可以标识执行变换的顺序。经处理的图像214可以是在对图像202应用一个或多个变换之前或之后从图像处理器118输出的一个或多个图像。每一经处理的图像214都可以包括一个或多个实现216、218,或可以被称为一个实现。
例如,应用程序116可以将具有YCbCr的格式205的图像202发送到图像处理器118。应用程序116还可以将处理命令206发送到图像处理器118。处理命令206可以包括例如,变换值210和实现值212,虽然这仅仅是一示例,且各实施例并不限于此。变换值210可以标识要在该图像上执行的缩放器变换、格式转换器变换和翻转/旋转器变换。作为示例,实现值212可以例如指示实现216应当通过缩放(例如,缩放30%)所接收到的图像202来生成,而实现218应当通过格式转换(例如,YCbCr到RGB)并随后旋转所接收到的图像202(例如,旋转90°)来生成。这些仅仅是一些示例,故各实施例并不限于此。图像处理器118随后例如可以通过实例化缩放器对象222、格式转换器对象224和/或翻转/旋转器对象226来执行指定的变换以处理图像和输出包括两个实现216、218的经处理的图像214。
图像处理器118可以包括解码器对象220和多个变换对象,诸如例如,缩放器对象222、格式转换器对象224和/或翻转/旋转器对象226。
例如,解码器对象220可以从图像202的当前文件类型203中解码和/或解压该图像,以便图像处理器118或一个或多个变换对象可以在图像202上执行变换。
缩放器对象222可被配置为在图像202上执行缩放器变换。缩放器对象222(或缩放器变换)可以缩放图像,这可以包括或整体或部分地增大或减小图像202的大小。缩放器对象222所执行的缩放可以在不改变图像的分辨率的情况下执行,或者该缩放可以包括改变或更改图像的分辨率。例如,变换值210可以指示执行将图像202的大小增加50%的缩放器变换。响应于这一图像处理命令,图像处理器118和/或缩放器对象222通常可以将图像缩放50%来生成缩放了50%的实现。
格式转换器对象224可以改变所接收到的图像202的格式205,或将图像202的格式205转换为不同的格式。例如,图像202可以用RGB的格式提供给图像处理器118,且变换值210可以标识将该图像转换为CMYK的一个格式转换器变换。例如,响应于这一处理命令,图像处理器118和/或图像处理器118的格式转换器对象224可以将所接收到的图像202的格式205从RGB转换为CMYK。
翻转/旋转器对象226可以翻转或旋转图像202。翻转/旋转器对象226(或变换)可以将图像202上下翻转或左右翻转或其可以将图像202旋转一定的度数。例如,变换值210可以标识上下翻转图像202或将图像逆时针旋转30°的翻转/旋转器变换。响应于这一图像处理命令,图像处理器118和/或翻转/旋转器对象226随后可以如所请求地翻转或旋转图像202。
如上所述,解码器对象220可以解码所接收到的图像。除被配置为解码图像202之外,解码器对象220还可以包括本地变换对象228。作为示例,本地变换对象228可以包括可以本地地执行的任何变换对象(或图像处理对象),如本地缩放器对象、本地格式转换器对象、和/或本地翻转/旋转器对象。如果本地变换对象228包括变换能力,则本地变换对象228可以在解码器对象220中本地地执行任何变换或变换组合。在一示例实施例中,解码器对象220的本地变换对象228可以与解码器对象220解码所接收到的图像202同时或几乎同时地对该图像执行一个或多个本地变换。通过在解码器对象220或本地变换对象228中本地地执行变换,这可以例如通常包括在图像上执行所请求的变换而不对所接收到的图像进行重新采样。例如,在某些情况下,这可以提供与在图像上可能发生重新采样或降采样的非本地变换相比改进的图像质量。
例如,本地变换对象228可以允许对图像本地地应用一个或多个变换,而无需对该图像进行重新采样或降采样。因此,例如,在某些情况下,本地变换可以有利地提供经改进的图像质量或避免图像质量损失。本地变换对象228可以包括任何数量的变换对象。例如,本地变换对象228可以包括本地缩放器对象、本地格式转换器对象和/或本地翻转/旋转器对象,以便所有所请求的变换都可以在图像202上本地地来执行。
在某些情况下,在从应用程序116接收到处理命令206之后,解码器对象220可以实例化一个或多个变换对象以在图像202上执行所请求的处理。如果本地变换对象228可用于执行所请求的变换或处理,则可以使用该本地对象来本地地处理图像。否则,如果所请求的变换不可作为本地变换来使用,则所实例化的变换对象,例如,对象222、224或226可以在图像上执行(例如,非本地的)处理,在某些情况下其可以包括对图像进行重新采样。因此,例如,所请求的变换的某些(或甚至所有)可在图像上本地地执行,而其它(或甚至所有)变换则可以随后由其它变换对象非本地地执行。
在一示例实施例中,所接收到的处理命令206可以请求在图像202上执行两个变换,如缩放25%和将图像格式从YCbCr转换为RGB。在该示例中,解码器对象220可由图像处理器118来实例化。同样,基于处理命令206,可以实例化缩放器对象和格式转换器对象对象并将其与解码器对象220进行关联。在该示例中,缩放可由本地变换对象228本地地执行,而所请求的从YCbCr到RGB的格式转换本地不可用。这仅是一个示例。因此,在接收到图像后,解码器对象220可以解码图像且本地变换对象228可以如所请求地将图像本地地缩放25%。下一步,可以将经解码和缩放的图像传递到格式转换器对象224,在此,例如,图像可被转换为RGB格式,并作为图像的(经解码、缩放和格式转换的)实现来输出。
在另一示例实施例中,图像处理器118可以输出图像的多个实现。每一实现都可以是该图像的不同版本,例如,其中对于每一实现在图像上执行不同的变换。例如,图像处理器118可以输出可以是原始图像202的第一图像实现,可以是解码之后的图像202的第二实现、和在被解码、缩放25%并被转换为RGB之后的第三图像。在一示例实施例中,该示例中的一个或多个(或甚至所有)变换可被本地地执行。这仅是一个示例。例如,处理命令206可以例如经由实现值212标识要提供或生成的一个或多个实现。
图3A是根据一示例实施例的在其中处理图像以提供多个实现的系统300A的图。系统300A可以包括由解码器对象220所接收的图像202和处理命令206。如上所述,图像202可以位于文件中且可以包括任何图像格式205的任何图像或若干图像。如上所述,处理命令206可以包括例如变换值和/或实现值,或标识要提供或生成的一个或多个图像实现的其它信息。例如,处理命令206可以指示例如输出图像202的多少实现,为每一实现执行哪一(些)变换以及以何种顺序执行变换来生成这些实现。
解码器对象220可以包括图像存储器302。解码器对象220可被耦合到或关联于缩放器对象222、格式转换器对象224和/或翻转/旋转器对象226。如上所述,解码器对象220可以如上所述地解码或解压所接收到的图像202。同样,缩放器对象222可以缩放图像。格式转换器对象225可以将图像的格式205转换为不同的格式,而翻转/旋转器对象则可以翻转或旋转图像。可以提供其它变换对象。
根据一示例实施例,图像处理器118可以输出一个或多个图像实现,诸如例如,实现304A、304B、304C和304D。每一实现都可以包括在其上执行零个或多个变换之后的图像202。在零个变换之后输出的情况下,可以输出原始的接收到的图像202。解码器对象220的图像存储器302可以存储所接收到的图像202,所以原始图像202即使在其上执行变换后也可以是可用的。图像存储器302可以例如存储在图像上执行了一个或多个变换之后的一个或多个中间阶段实现。这些中间阶段实现可以作为实现来输出,和/或可由其它变换进一步处理以作为其它实现来输出。例如,在一示例实施例中,图像存储器302可以是解码器对象220的一部分,或可在系统存储器104中(例如,图1的RAM 106中)提供。
例如,原始图像202可以是狗或其它物体的图像,且处理命令可以包括将图像大小缩放到原始大小的150%的第一实现和将图像上下翻转的第二实现。随后,图像存储器302可以存储原始的狗的图像202以便在该图像被缩放150%以得到第一实现之后,第二实现仍然可以使用存储在图形存储器接口302中的原始图像202以将原始图像202上下翻转。存储在图像存储器302中的原始图像可被用来输出原始图像的实现。在一示例实施例中,图形存储器302还可以存储标识被处理的图像202的状态和/或在该图像上执行了一个或多个变换之后的中间状态实现的状态信息。例如,在提供第二实现304B时,图像存储器302可以存储在缩放器对象222执行缩放器变换之后的图像或图像状态信息。随后,例如,格式转换器对象224可以从图像存储器302检索图像状态信息来在经缩放的图像上执行格式转换器变换。
现将简要描述图3A中的系统300A所执行的图像处理。在一示例实施例中,通常可以首先提供解码器对象220。在解码器对象220之后,可以基于处理命令206,如基于处理命令206的实现值212来串行地、并行地或两者的组合来组织诸如系统300A的缩放器对象222、格式转换器对象224和翻转/旋转器对象226等一个或多个对象。例如,如图3A的示例中所示,解码器对象220可以接收RGB格式的狗的图像202。例如,解码器对象220还可以接收与图像202相关联的处理命令206,其中处理命令206包括产生该图像的四个实现的命令。所请求的第一实现304A可以包括已由解码器对象解码并由缩放器对象缩放(例如,缩放50%)的图像202。所请求的第二实现304B可以包括已由解码器对象解码、由缩放器对象缩放(例如,缩放50%)并随后由格式转换器对象转换了格式(例如,从RGB到CMYK)的图像。所请求的第三实现304C可以包括已由解码器对象解码并随后由翻转/旋转器对象旋转(例如,90°)的图像。而第四实现304D可以包括例如以任何顺序由解码器对象解码,由翻转/旋转器对象旋转(例如,30°)并由格式转换器对象转换了格式(例如,从RGB到CMYK)的图像202。
例如,在接收到图像202后,解码器对象220可以在图像存储器302中存储原始图像202的副本,以供进一步处理和/或作为未经处理的实现的可能输出。在图3A所示的示例实施例中,系统300A的解码器对象220不包含例如,用于如处理命令所请求的缩放器对象、格式转换器对象或翻转/旋转器对象等的本地变换对象228。因此,在该示例中,所请求的变换可由非本地变换对象来执行。
在接收到图像202后,可以实例化解码器对象220来执行对所接收到的图像的解码。同样,可以基于处理命令206来实例化一个或多个附加对象并将它们耦合到解码器对象220或与之进行关联。这可以包括确定一个或多个对象并确定这些对象根据处理命令处理图像以生成所请求的图像实现的安排,例如串行和/或并行安排和/或顺序。例如,作为示例,如图3A所示,这可以包括确定应当串行地提供缩放器对象222和格式转换器对象224以生成第二实现304B,而(与用来生成第二实现的各个对象)并行地放置翻转/旋转器对象226以生成第三实现304C。在解码器对象220本地地解码图像202之后,则可以生成四个示例实现。
如上所述,对于图3A中的第二实现304B,经解码的图像可由缩放器对象222来缩放并由格式转换器对象224来转换格式以生成第二实现304B。对象222和224可以是例如非本地变换。例如,非本地变换可以涉及例如对经解码的图像进行重新采样或甚至降采样。在另一示例实施例中,缩放器对象222和格式转换器对象224两者都是本地地可用的,并且因此可在解码器对象220中被本地地执行。注意,可以存储在经解码的图像由缩放器对象222缩放之后的中间阶段实现。该来自缩放器对象222的中间阶段实现输出随后可以作为第一实现304A来输出。
例如,为产生第三实现304C,可由翻转/旋转器对象226旋转该存储在图像存储器302中的经解码的图像以生成第三实现304C。最后,为产生第四实现304D,存储在图形存储器302中的经解码的图像可首先由格式转换器对象224来转换格式(例如,相对于第二实现304B中的稍后)并随后由翻转/旋转器对象226旋转以生成第四实现308D。在另一示例实施例中,可以本地地提供用来生成第四实现304D的所有对象,包括格式转换器对象224、翻转/旋转器对象226,从而意味着在一示例实施例中可由解码器对象220执行本地处理以生成图像的第四实现304D。
如上所述,在至少某些情况下,在系统300A中,缩放器对象222、格式转换器对象对象224和翻转/旋转器对象226可以例如在图像上非本地地执行其相应的变换(即,其可能重新采样、降采样和/或损失图像质量)。同样,如上所述,应用于系统300A的各变换、各变换的顺序和实现的数量仅是出于说明性的目的。在替换实施例中,应用于系统300A的各变换、各变换的顺序和实现的数量可以变化。同样,每一实现都不必分开处理,因为以上讨论仅是说明性的,所以可以同时处理多个实现。在替换实施例中,还可以接收多个图像202和多个处理命令206。
图3B是根据另一示例实施例的在其中处理图像以提供多个实现的系统300B的框图。系统300B可以包括由解码器对象220所接收的图像202和处理命令206。系统300B(图3B)非常类似于系统300A(图3A),故将描述两图之间的不同。如上所述,图像202可以是具有可接受的文件类型203的文件和/或可以是任何可兼容的图像格式205的任何图像或若干图像。如上所述的处理命令206可以包括变换值210和实现值212。处理命令206可以指示例如输出图像202的多少实现,为每一实现执行哪些变换以及以何种顺序执行这些变换。
解码器对象220可以包括例如图像存储器302、本地翻转/旋转器对象306和本地格式转换器对象308。然而,在系统300B中,本地翻转/旋转器对象306和本地格式转换器对象308可以在图像202上分别执行翻转/旋转器变换和格式转换器变换,而非由翻转/旋转器对象226和格式转换器对象224执行其各自的变换。因此,在该示例中,本地翻转/旋转器对象306和本地格式转换器对象308是可用的,并可分别取代非本地对象226和224而被用来处理图像。在系统300B中,如果本地对象可用于在图像202上执行变换,则可以优选地使用本地对象而非非本地对象。随后,例如,经处理的图像可以穿过(或绕过)例如本地对象对于其可用的非本地对象。因此,可以基于本地对象、非本地对象或本地和非本地对象的组合来生成四个实现304E、304F、304G和304H,以根据处理命令生成多个实现。
如在系统300A中一样,可以基于处理命令206来串行地、并行地或以其两者的组合组织系统300B的缩放器对象222、格式转换器对象224和翻转/旋转器对象226和/或其它对象。例如,处理命令206可以包括产生四个实现(304E-H)的命令。对于实现304E-H的请求或处理命令可以例如与对于实现304A-D(图3A)的处理命令相同,但系统300B可以有利地使用一个或多个本地对象来执行图像处理并生成多个所请求的实现。第一实现304E可以使用本地解码器220、非本地缩放器对象222来生成,因为没有本地缩放器对象(虽然在替换实施例中其可能是可用的)可用。然而,第二实现304F可以使用本地解码器220、非本地缩放器对象222(例如,因为没有本地缩放器对象可用)和本地格式转换器对象308来生成。因为本地格式转换器对象308可用于执行所请求的格式转换,所以可以使用本地格式转换器对象308而非经实例化的非本地格式转换器对象224来生成第二图像实现304F。然而,在一示例实施例中,通常可以在非本地变换之前执行任何本地变换。例如,为产生实现304F,可以在非本地缩放器对象222之前执行本地格式转换器对象308。
同样,第三实现304G可以使用本地解码器对象220和本地翻转/旋转器对象306来生成。在该示例中,可以使用本地翻转/旋转器对象306而非非本地翻转/旋转器对象226。第四图像实现404H也可以使用包括本地解码器对象220、本地格式转换器对象308和本地翻转/旋转器对象306在内的所有本地对象来生成。在本地对象308和306存在或可用时,可以分别取代对应的非本地对象224和226来使用。例如,在图像由解码器对象220处理(包括正由本地对象306和308处理)之后,经处理的图像可以穿过非本地对象224和226而不处理(因为格式转换和旋转已由本地格式转换器308和本地翻转/旋转器对象306执行)。如上所述,在本地对象可用时使用本地对象可以本地地提供所请求的处理,例如,在某些情况下不必重新采样图像和/或损失质量。
以此方式,根据一示例实施例,可以生成并提供图像的多个实现,而非只有一个实现。同样,多个实现的生成和输出可以使用本地对象来执行变换或图像处理来改进输出图像或实现的质量。
在替换实施例中,应用于系统300B的各变换、各变换的顺序和实现的数量可以变化。同样,每一实现都不必分开处理,因为以上讨论仅是说明性的,所以可以同时处理多个实现。在替换实施例中,还可以使用多个图像202和多个处理命令206。
图4-6包括关于以上描述的图1、图2和图3的各个示例的和/或关于其它示例和上下文的操作流程或流程图的各种示例。然而,应当理解,该操作流程可在多个其它环境和上下文中和/或在图1、图2和图3的经修改的版本中执行。同样,虽然以所示顺序呈现了各操作流程,但应当理解,各操作能以与所示出的顺序所不同的顺序来执行,或可以同时执行。
图4是示出根据一示例实施例的用于在图像上执行多个变换以产生一个或多个实现的过程的流程图。在开始操作之后,操作流程400移至其中可以接收图像的接收操作410。例如,图像处理器118可以从应用程序116接收图像202。尽管并非所需,但在另一示例实施例中,应用程序116和图像处理器118可以是同一总体系统200、应用程序或设备的部分。
随后在接收操作420,可以接收关于该图像的图像处理命令(或加工命令)。例如,如图2所示,图像处理器118可以从应用程序116接收处理命令206。处理命令206可以与图像202相关联且指示如何处理图像202。处理命令206例如可以包括变换值210和/或实现值212,虽然这仅是一示例实施例。
随后在执行操作430,可以基于图像处理命令或加工命令而在图像上本地地执行多个变换以提供该图像的一个或多个实现。例如,如图2所示,基于处理命令206,图像处理器118可以在图像202上执行变换以提供经处理的图像214的实现216、218。或者,如图3B所示,图像202和处理命令206可由解码器220来接收,并且例如在用本地翻转/旋转器对象306和本地格式转换器对象308本地地执行多个变换之后,可以提供包括实现304G和304H在内的一个或多个实现。
图5是示出根据一示例实施例的用于执行多个变换的过程的流程图。在开始操作之后,操作流程500移至其中可以接收图像的接收操作510。例如,图像处理器118可以从应用程序116接收图像202。
随后在接收操作520,可以接收关于该图像的图像处理命令(或加工命令)。例如,如图2所示,图像处理器118可以从应用程序116接收处理命令206。处理命令206可以与图像202相关联并且指示如何处理图像202,且可以标识要提供或生成的该图像的一个或多个实现。
随后,在执行操作530,可以基于图像处理命令而在图像上执行多个变换以提供多个实现。多个实现的每一个都可以包括在该图像上本地地执行的至少一个变换。例如,如图3B所示,解码器220可以接收图像202和处理命令206。在解码器对象220解码图像之后,本地格式转换器对象308则可以执行格式转换器变换,并且随后非本地缩放器222执行非本地缩放器变换以产生第二实现304F。另选地,由本地格式转换器对象308所执行的本地格式转换可在解码器220解码图像的同时来执行。如上所述,可在非本地变换之前执行本地变换。在一示例实施例中,通常能以任何顺序、但通常在非本地变换之前执行本地变换。非本地变换通常也能以任何顺序来执行。同样,例如,为产生第三实现304G,可由解码器对象220来解码图像,并且随后或同时,可由本地翻转/旋转器对象306来在图像上执行旋转变换。因此,以此方式,作为示例,可以提供多个实现,每一实现都包括为生成该实现而在该图像上执行的至少一个本地变换。
图6是示出根据又一示例实施例的用于在图像上执行一个或多个变换以产生一个或多个实现的过程的流程图。在开始操作之后,操作流程600移至其中可以接收图像的接收操作610。随后在接收操作620,可以接收图像处理命令。
随后在确定操作630,基于图像处理命令(或加工命令),可以确定一个或多个变换和对于这些变换的安排以根据图像处理命令来处理该图像并提供多个图像实现。例如,基于图像处理命令,可以确定一个或多个变换(或对象)。另外,可以确定处理该图像的变换或对象的诸如串行和/或并行安排等安排以根据图像处理命令处理该图像和生成图像实现。例如,在图3A中,这可以包括确定处理该图像的缩放器对象222和格式转换器对象224的串行安排(在解码器对象220之后)以产生所请求的所接收到的图像202的实现304B。同样,例如,该确定可以包括确定处理所接收到的图像的变换或对象的并行安排和顺序以产生其它所请求的实现,如304A、304C和304D。
尽管如此处所述的示出了所描述的各个实现的某些特征,但对本领域技术人员来说,可以发生许多修改、替换、改变和等效技术方案。因此,应当理解,所附权利要求旨在覆盖落入各实施例的真正精神之内的所有这些修改和改变。