Losslessly exchanging image layer data between image editing applications

Methods, systems, and non-transitory computer readable storage media are disclosed for losslessly exchanging image layer data between image applications by generating an edit-restricted layer for one image application to represent an incompatible or unsupported image layer from another image application. For example, the disclosed system can determine that one or more image layers in a layered image file formatted for a layered image application include characteristics incompatible (e.g., unsupported) with a feature-restricted image application. The disclosed system can then generate an edit-restricted image layer representing the image layer(s) in the feature-restricted image application by limiting or preventing edit operations to the edit-restricted layer as a type of preview object. The disclosed system can also store image layer data from the feature-restricted image application back to the layered image file for viewing and editing in the layered image application without loss of image layer data corresponding to the edit-restricted layer.

BACKGROUND

Digital image editing systems include tools for users to create and edit digital image content by interacting with individual elements of a digital image. For example, many digital image editing systems allow users to create and edit separate image layers to modify corresponding visual characteristics or positions of components of digital images. To illustrate, digital image editing systems can include image applications with options for users to modify color, lighting, or other characteristics of all (or specific parts) of a digital image via image layers.

SUMMARY

This disclosure describes one or more embodiments of systems, methods, and non-transitory computer readable storage media that solve the foregoing problems and provide other benefits. In particular, the disclosed systems can losslessly exchange image layer data between image applications by generating an edit-restricted layer for one image application to represent an incompatible or unsupported image layer from another image application. For example, in one or more embodiments, the disclosed systems identify a request to open a layered image file formatted for a layered image application and analyze the file in a feature-restricted image application. The disclosed systems further determine that image layers from the layered image file include characteristics incompatible (e.g., unsupported) with the feature-restricted image application. The disclosed systems can then generate an edit-restricted image layer representing the images layers in the feature-restricted image application by limiting or preventing edit operations to the edit-restricted image layer as a type of preview object. Even when the image applications do not have the same set of features and capabilities, the disclosed systems can thus accurately retain image layer data across image applications.

DETAILED DESCRIPTION

This disclosure describes one or more embodiments of a cross-application layering system that converts image layer data across image applications without losing such data by generating an edit-restricted layer for one image application to represent an incompatible or unsupported image layer from another image application. For example, the cross-application layering system (or simply “layering system”) can identify a request to utilize a feature-restricted image application to open a layered image file formatted for a layered image application. The layering system further determines whether one or more of the image layers include characteristics incompatible with the feature-restricted image application. Upon determining that at least one such layer is incompatible, the layering system generates an edit-restricted layer representing incompatible layers by limiting edit operations available for the edit-restricted layer as a type of preview object within the feature-restricted image application. The layering system can thus represent a layer from the layered image application in the edit-restricted layer within the feature-restricted image application.

In addition to generating such an edit-restricted layer for an incompatible image layer, in certain implementations, the layering system identifies an image layer from the layered image file compatible with the feature-restricted image application. The layering system can generate an editable layer corresponding to such a compatible layer. By generating both the edit-restricted layer and the editable layer, the layering system can open the layered image file and provide an image corresponding to the layered image file for display within the feature-restricted image application on a display device.

In one or more embodiments, the layering system can also modify image layers from an image layer stack within the feature-restricted image application based on user inputs. For instance, the layering system can generate or modify editable image layers and certain features of edit-restricted image layers using capabilities of the feature-restricted image application. But the layering system prevents or restricts certain edit operations on the edit-restricted layers within the feature-restricted image application to prevent losing image layer data recognized by the layered image application. For instance, in some cases, the layering system limits editing to a subset of edit operations for an edit-restricted layer representing a single incompatible layer, such as by limiting editing operations to one or more of a layer-blend-mode operation, a layer-name operation, or a layer-opacity operation. Additionally, or alternatively, the layering system prevents certain edit operations altogether without flattening the edit-restricted layer. Furthermore, the layering system can prevent editing of an edit-restricted layer representing more than one related, incompatible layer (e.g., where one or more incompatible layers modify another layer), including preventing operations that modify layer properties such as blend, name, or opacity.

After opening a layered image file, in one or more embodiments, the layering system stores both edited and unedited image layer data from the feature-restricted image application to the same layered image file. For instance, the layering system can compare image layer data in the feature-restricted image application to layer image data from the layered image file as stored by the layered image application. The layering system can organize and format the image layer data from the feature-restricted application for the layered image application and store the formatted image layer data layer back to the layered image file. The layering system can open a layered image file using image applications having different capabilities while retaining image layer data from each application.

In response to a request to save image layer data from the feature-restricted image application, for instance, the layering system can determine whether editing has introduced any new (or deleted) image layers or whether to move any previous image layers to new positions in a layer stack. Furthermore, the layering system can convert any edit-restricted layers back to the corresponding image layer(s) associated with the layered image application. For example, the layering system can determine a position of an edit-restricted layer in the image layer stack associated with the feature-restricted image application. The layering system can then place the corresponding incompatible layer(s) represented by the edit-restricted layer in a corresponding position of the image layer stack associated with the layered image file. If the layering system inserted or deleted any layers using the feature-restricted image application, the layering system can insert or delete corresponding layers within the image layer stack associated with the layered image file. The layering system can thus ensure that the image layer stack associated with the feature-restricted image application and the image layer stack associated with the layered image file have the same image layer data.

As suggested above, some previous or existing digital image editing systems allow users to create and edit digital content via separate image layers. But such previous or existing systems inaccurately represent (or impose limits on) image files of one image application when opened in another image application. For instance, previous or existing digital image editing systems often do not retain or represent certain information in image files when opening the image files in other applications, such as layer-specific information. Further to the point, some image applications can provide operations or functionality that other image applications do not support. When opening image files formatted for a first image application in a second image application, the second image application is often not configured to recognize or represent certain features (in the image files) unsupported by the second image application. Such previous or existing systems lose image data from the image files based on the unrecognized features (e.g., from image layers) when rendering image content from the image files in such a second image application, resulting in inaccurate image reconstruction in the second image application.

In addition to inaccurately representing or limiting the representation of image files, some previous or existing digital editing systems limit the editing functionality of some image applications. Because some image applications do not recognize or support image layers (or features across image layers) from another image application, some existing digital editing systems lack corresponding code to support editing such image layers or features. In some cases, previous or existing digital image editing systems include limited tools for editing image layers or features from an image file in one image application only to distort or misrepresent those same image layers or features when another image application opens the image file.

The disclosed cross-application layering system provides a number of advantages over such previous or existing digital editing systems. For example, the layering system improves the accuracy with which a device or system utilizing cross-application image editing represents or exchanges data for image layers. In particular, the layering system improves accuracy by retaining image layer data across a plurality of image applications that have different feature sets by using edit-restricted layers. By converting image layers that have characteristics incompatible with a feature-restricted image application into an edit-restricted layer, the layering system can prevent the feature-restricted image application from making modifications to a layered image that result in losing image layer data. By limiting editing operations for an edit-restricted layer to simple functions, such a layer-blend-mode operation and a layer-opacity operation, the layering system can likewise facilitate editing some features of an image layer with incompatible characteristics in a feature-restricted image application without corrupting or distorting the image layer when the layered image file is opened in the layered image application.

In addition to improving the accuracy of representing or exchanging data for image layers, the cross-application layering system improves the efficiency with which a device or system utilizing cross-application image editing can use a layered image file across multiple image applications. By using one or both of editable layers and edit-restricted layers in a feature-restricted image application, the layering system facilitates opening, viewing, and editing a layered image across image applications using a single layered image file and format. For example, rather than requiring a user to save a layered image to a separate file format or recreate components lost when opening a layered image file in a different image application other than the image application used to create the file, the layering system can open a single image file in separate image applications having different features and capabilities. The layering system can thus reduce processing and storage loads on a computing device by using edit-restricted layers to protect image layer data and facilitate cross-application use of a layered image file.

As illustrated by the foregoing discussion, the present disclosure utilizes a variety of terms to describe features and advantages of the layering system. For example, as used herein, the term “image application” refers to an application executable on a computing device for viewing a digital image on a display device. Additionally, an image application can include an image editing application that applies modifications to digital images including raster-based or vector-based image content. As used herein, the term “layered image application” refers to an image application for viewing a digital image including image layer data. For instance, a layered image application analyzes image layer data to (upon execution) cause a computing device to display a digital image based on the image layer data. Additionally, a layered image application can be an image editing application that generates, deletes, or modifies image layer data (e.g., image layers) in a digital image.

As used herein, the term “feature-restricted image application” refers to an image application that has a limited set of features or capabilities relative to a layered image application. In particular, a feature-restricted image application can lack features associated with characteristics of one or more image layers in a layered image file. A feature-restricted image application may thus be incapable of performing certain operations associated with an image layer due to the lack of features or capabilities of the feature-restricted image application. In one or more embodiments, a feature-restricted image application can also be a layered image application with different feature availability than a layered image application that creates a layered image file. Additionally, a plurality of image applications involved in editing a digital image may be feature-restricted image applications relative to each other.

As used herein, the terms “image layer” and “layer” refer to a digital element or level of a digital image on which an image editing application can apply imaging effects or image components. Such an image layer may include imaging effects or components over or under other image components. For instance, an image layer can include one or more elements of a digital image such as, but not limited to, objects or scenes within a digital image or a filter or modifier that modifies one or more objects or components in a digital image. Additionally, the term “edit-restricted layer” refers to an image layer that is editable by a limited set of available edit operations. In at least some implementations, an edit-restricted layer may not be editable by any edit operations. Alternatively, an edit-restricted layer may be editable by a particular subset of edit operations that do not modify the characteristic(s) of the corresponding image layers incompatible with a feature-restricted image application. As used herein, the term “editable layer” refers to an image layer that is editable by a set of available edit operations in a feature-restricted image application. In some cases, an editable layer is editable by the same set of edit operations in a feature-restricted image application as in a layered image application.

As used herein, the term “flattened image layer” refers to an image layer generated by combining a plurality of image layers. Specifically, a flattened image layer includes a single image layer that an image application (or other device software) causes a computing device to generate by combining a plurality of separate image layers and removing separate layer properties from the plurality of separate image layers. In some cases, flattening a plurality of image layers removes certain image layer properties that allow for editing individual components or characteristics corresponding to the separate layers (e.g., by removing transparent areas and combining separate objects and object properties into a single image component).

As used herein, the term “layered image file” refers to a digital image file that includes data describing one or more different image layers of a digital image. For instance, a layered image file can include an image layer stack with one or more image layers corresponding to different elements or levels of a digital image. Additionally, a layered image file can include a digital file having a specific file extension corresponding to an image application, such as .PSD or .PSDC. Furthermore, as used herein, the terms “image layer stack” and “layer stack” refer to an ordered list of image layers associated with a layered image file. For example, a layer stack can indicate which image layers of a digital image are over or under other image layers of the digital image. A layer stack can also indicate whether one or more image layers are associated with one or more image layers of a digital image.

Additional detail will now be provided regarding the cross-application layering system in relation to illustrative figures portraying exemplary implementations. To illustrate,FIG. 1includes an embodiment of a system environment100in which a cross-application layering system102(“layering system102”) operates. In particular, the system environment100includes server device(s)104and a client device106in communication via a network108. Moreover, as shown, the server device(s)104include a digital image management system110including the layering system102. Additionally, the client device106can include a plurality of client applications, such as a first client application112aand a second client application112b.

In some embodiments, the first client application112aconstitutes a layered image application, and the second client application112bconstitutes a feature-restricted image application. For example, the first client application112acan cause the client device106to create, display, and modify a layered image file by creating, displaying, and modifying digital image content including one or more image layers. The second client application112bcan also cause the client device106to display and modify the same layered image file. In one or more embodiments, the second client application112bincludes a different feature set (e.g., different set of available operations, functionality, or supported image layer data) than the first client application112a.Accordingly, the layering system102can prepare the layered image file for use within the second client application112bvia the use of edit-restricted layers representing incompatible image layer data. In one or more alternative embodiments, the first client application112aand/or the second client application112bcan include web browser applications that access one or more web-based image editing applications from the server device(s)104.

As shown inFIG. 1, the server device(s)104include the digital image management system110. The digital image management system110can include a variety of systems that manage digital image content for one or more user accounts. The digital image management system110can also store, display, and allow interactions with digital image content across a variety of applications (e.g., in a suite of related applications). The digital image management system110can also include or be part of a system that provides the digital image content to client devices (e.g., as part of marketing communications). The digital image management system110can also provide digital image management tools and usage and performance information associated with the digital image content in connection with marketing communications or other uses of the digital image content.

As further shown inFIG. 1, the digital image management system110includes the layering system102. In particular, the layering system102can perform operations associated with managing digital images that include image layer data. For example, the layering system102can open layered image files and perform operations on (e.g., view, edit) the layered image files based on user input using a plurality of image applications (e.g., the first client application112aand the second client application112b). For example, the layering system102can perform operations for converting image layer data between formats of different image applications within the layered image file. The layering system102can manage data associated with editing and converting image layer data between formats including, but not limited to, digital images, image layers, or edit operations to image layers (e.g., modifications stored in temporary memory).

In one or more embodiments, the layering system102can communicate with a plurality of client devices associated with a user account. For instance, the client device106can utilize the digital image management system110to store digital image content accessible to any client devices associated with the user account. A user can thus perform operations associated with layered image files stored at the digital image management system110via a plurality of client devices by communicating with the layering system102.

Furthermore, in at least some embodiments, the layering system102can host image applications for access via a web browser or other remote access application at the client device106. To illustrate, the layering system102can provide the first client application112aand the second client application112bvia a web browser interface that a user of the client device106can access via the network108. Accordingly, the layering system102can host image applications for performing editing operations at the server device(s)104in addition to, or instead of, the client device106performing editing operations at the first client application112aand the second client application112b.

In one or more embodiments, the server device(s)104include a variety of computing devices, including those described below with reference toFIG. 7. For example, the server device(s)104can include one or more servers for storing and processing data associated with digital image content and digital image editing. The server device(s)104can also include a plurality of computing devices in communication with each other, such as in a distributed storage environment. Furthermore, the server device(s)104can include devices and/or components in connection with systems hosting digital image content, such as one or more third-party image hosting systems. In some embodiments, the server device(s)104comprise a content server. The server device(s)104can also comprise an application server, a communication server, a web-hosting server, a social networking server, a digital content campaign server, or a digital communication management server.

In addition, as shown inFIG. 1, the system environment100includes the client device106. The client device106can include, but is not limited to, a mobile device (e.g., smartphone or tablet), a laptop, a desktop, including those explained below with reference toFIG. 7. Furthermore, although not shown inFIG. 1, the client device106can be operated by a user (e.g., a user included in, or associated with, the environment) to perform a variety of functions. In particular, the client device106can perform functions such as, but not limited to, creating, storing, uploading, downloading, viewing, and/or modifying a variety of digital content (e.g., digital videos, digital audio, and/or digital images). The client device106can also perform functions for requesting and displaying information associated with digital content from the digital image management system110. For example, the client device106can communicate with the server device(s)104via the network108to interact with digital images including image layers. AlthoughFIG. 1illustrates the system environment100with a single client device106, the system environment100can include a different number of client devices.

Additionally, as shown inFIG. 1, the system environment100includes the network108. The network108can enable communication between components of the system environment100. In one or more embodiments, the network108may include the Internet or World Wide Web. Additionally, the network108can include various types of networks that use various communication technology and protocols, such as a corporate intranet, a virtual private network (VPN), a local area network (LAN), a wireless local network (WLAN), a cellular network, a wide area network (WAN), a metropolitan area network (MAN), or a combination of two or more such networks. Indeed, the server device(s)104and the client device106may communicate via the network using a variety of communication platforms and technologies suitable for transporting data and/or communication signals, including any known communication technologies, devices, media, and protocols supportive of data communications, examples of which are described with reference toFIG. 7.

AlthoughFIG. 1illustrates the server device(s)104and the client device106communicating via the network108, the various components of the systems100can communicate and/or interact via other methods (e.g., the server device(s)104and the client device106can communicate directly). Furthermore, althoughFIG. 1illustrates the layering system102being implemented by a particular component and/or device within the system environment100, the layering system102can be implemented, in whole or in part, by other computing devices and/or components in the system environment100. For example, in some embodiments, the client device106implements the layering system102. While this disclosure describes the layering system102performing certain actions without express reference to the server device(s)104or the client device106, in some embodiments, the layering system102includes computer-executable instructions that cause server device(s), a client device, or other computing device to perform actions described below.

As mentioned above, the layering system102can convert image layers between formats for a plurality of different image applications.FIGS. 2A-2Billustrate overviews of for the layering system102converting image layers in a layered image file in accordance with one or more embodiments. Specifically,FIG. 2Aillustrates the layering system102converting image layers in a layered image file from a format associated with a layered image application to a format associated with a feature-restricted image application within the layered image file.FIG. 2Billustrates the layering system102converting the image layers from the format associated with the feature-restricted image application back to the format associated with the layered image application within the layered image file when storing image layers to the layered image file. As suggested above, in some embodiments, the layering system102utilizes the first client application112aas a layered image application and the second client application112bas a feature-restricted image application.

In one or more embodiments, as illustrated inFIG. 2A, layered image content200afrom a layered image file202includes a plurality of image layers204a-204c.Specifically, the layering system102opens the layered image file202in a layered image application and performs operations on the layered image content200a(e.g., a digital image) based on user input. Accordingly, the layering system102can provide tools for interacting with digital content in a variety of ways. For example, the layering system102can provide tools for interacting with the plurality of image layers204a-204c.To illustrate, the layering system102generates the plurality of image layers204a-204cusing specific features of the layered image application based on user input.

Additionally, by creating the image layers204a-204cusing the layered image application, the layering system102formats the image layers204a-204cfor the layered image application. For instance, the layered image file202can include metadata including information about each of the image layers204a-204c.By formatting the layered image file202for the layered image application, in some embodiments, the layering system102formats the metadata of the layered image file202for the layered image application to read and write to the image layers204a-204caccording to available features of the layered image application. The layering system102can thus generate, modify, or delete image layers of the layered image file202using the layered image application.

As further illustrated inFIG. 2A, the layering system102converts the plurality of image layers204a-204cfrom a formatting for the layered image application to a formatting for a feature-restricted image application. Because the image layers204a-204care formatted for the layered image application, in certain implementations, one or more of the image layers204a-204cmay not be compatible with the feature-restricted image application. To illustrate, a first image layer204ais compatible with the feature-restricted image application, such that the feature-restricted image application causes a computing device to correctly display and perform operations on the first image layer204abased on user input. Additionally, a second image layer204band a third image layer204cis incompatible with the feature-restricted image application, such that the feature-restricted image application may not cause a computing device to correctly display and/or perform operations on the second image layer204band the third image layer204cbased on user input.

In one or more embodiments, the layering system102converts compatible image layers (e.g., the first image layer204a) by storing information from the compatible image layer in an image layer that corresponds to the feature-restricted image application. For instance, the feature-restricted image application may include application-specific information in its image layers for managing the image layers (e.g., naming and determining an order of the image layers). Accordingly, the layering system102can move or copy information from an image layer formatted for the layered image application to an image layer formatted for the feature-restricted image layer.FIG. 2Aillustrates that the resulting image layer from converting the first image layer204ais an editable layer206. The feature-restricted image application can modify the editable layer206in the same (or similar) manner as the layered image application.

In one or more additional embodiments, the layering system102converts incompatible image layers (e.g., the second image layer204b,the third image layer204c) by generating one or more new layers that contain the information from the incompatible layers, but that have limited interactivity within the feature-restricted image application. For example, the feature-restricted image application may lack one or more features of the layered image application. Accordingly, the layering system102can generate one or more edit-restricted layers (e.g., edit-restricted layer208) representing incompatible image layers from the layered image file202. Generating the edit-restricted layer208allows the feature-restricted image application to accurately display the image content corresponding to the second image layer204band the third image layer204cwhile limiting edit operations available to perform on the edit-restricted layer208.

Once the layering system102has converted the image layers204a-204cfrom the layered image file202to a format that is compatible with the feature-restricted image application, the layering system102can then display layered image content200bbased on the converted image layer data using the feature-restricted image application. In particular, the layering system102generates the layered image content200bfrom the editable layer206and the edit-restricted layer208(e.g., from data stored in memory based on the contents of the layered image file202). The layering system102can then present the layered image content200bwithin the feature-restricted image application while performing operations on the editable layer206(e.g., editing operations) based on user input and limiting available operations for the edit-restricted layer208.

In addition to converting image layer data from a format for a layered image application to a format for a feature-restricted image application, the layering system102can also convert the image layer data back to a format for the layered image application. For example,FIG. 2Billustrates the layering system202converting image layer data back to a format for the layered image application when storing image layer data from the feature-restricted image application to the layered image file202. By converting and storing the image layer data from the feature-restricted image application back to a format for the layered image application in the layered image file202, in certain implementations, the layering system102uses a single image file across a plurality of applications without losing image layer data.

In one or more embodiments, the layering system102analyzes the layered image content200bin response to a request to store the layered image content200bto the layered image file202. The layering system102determines whether the layered image content200bincludes any modifications to image layer data, including added image layers, removed image layers, or modified image layers. For instance, as shown inFIG. 2B, the layering system102determines that the layered image content200bincludes the editable layer206, the edit-restricted layer208, and an additional editable layer210. Accordingly, the layering system102determines that the layered image file202includes a new layer (i.e., the additional editable layer210) using the feature-restricted image application.

As further shown inFIG. 2B, the layering system102converts the image layer data from a format associated with the feature-restricted image application to a format associated with the layered image application. Specifically, the layering system102converts editable layers (e.g., editable layer206, additional editable layer210) to corresponding image layers (e.g., first image layer204a,new image layer204d) formatted for the layered image application. Additionally, the layering system converts edit-restricted layers (e.g., edit-restricted layer208) to corresponding image layers (e.g., second image layer204b,third image layer204c) formatted for the layered image application and stores the image layers (e.g., image layers204a-204d) in the layered image file202.

In one or more embodiments, the resulting image layers (e.g., image layers204a-204d) are compatible with the layered image application. The layered image application can cause a computing device to display layered image content200cbased on the updated image layer data from the layered image file202. For instance, the layering system102organizes the image layer data in the layered image file202in a way that is consistent with the organization within the feature-restricted image application. Thus, the layering system102can ensure that layered image content from the layered image file202is displayed correctly across a plurality of image applications.

In one or more additional embodiments, the layering system102performs similar operations for generating edit-restricted layers for the layered image application if the image layers include any image layer data incompatible with the layered image application. For instance, if the feature-restricted image application includes features or capabilities that the layered image application does not have, the layering system102generates image layer data that indicates the information and preserves the information. To illustrate, the layering system102can store such information in additional edit-restricted layers or in metadata that allows the layered image application to accurately display any corresponding image layer data.

FIGS. 3A-3Billustrate the layering system102converting image layers between image applications using a single layered image file. In particular,FIG. 3Aillustrates for the layering system102converting image layers in a layered image file from a format associated with a layered image application to a format associated with a feature-restricted image application.FIG. 3Billustrates for the layering system102storing image layers back to the layered image file from the feature-restricted image application in the format associated with the layered image application.FIGS. 3A-3Baccordingly illustrate to the layering system102opening a layered image file within different image applications while accurately displaying image content of the layered image file in the different image applications.

As illustrated inFIG. 3A, in one or more embodiments, the layering system102can perform a series of acts300for making image layer data in a layered image file compatible with a feature-restricted image application. For example, as illustrated inFIG. 3A, the layering system102can perform an act302of opening a layered image file in a feature-restricted image application. To illustrate, the layered image file may be formatted for a layered image application in response to generating and/or saving the layered image file using the layered image application. The layering system102can then receive an indication of a request from a computing device to open the layered image file in a feature-restricted image application that is different than the layered image application. As previously described, the feature-restricted image application can include a feature set (e.g., set of functions for interacting with digital image content) that is different than the feature set of the layered image application.

As further shown inFIG. 3A, in response to the request to open a layered image file using a feature-restricted image application, the layering system102performs an act304of setting an image layer stack iterator (e.g., a pointer) for the layered image file. As indicated above, the layered image file can include an image layer stack corresponding to one or more image layers of the layered image file. The image layer stack can indicate a display order of the one or more image layers of the layered image file including where each image layer displays (e.g., in front or behind) relative to each other image layer in the image layer stack. To illustrate, in some embodiments, the layering system102sets the iterator to a first (e.g., top) image layer of the image layer stack so that the layering system102can manage an order in which the layering system102analyzes the image layer(s).

As further shown inFIG. 3A, the layering system102also performs an act306of determining whether the image layer stack iterator is valid. By determining that the iterator is valid, the layering system102determines whether the layering system102has any more image layers to analyze. For instance, after first initiating the image layer stack iterator on the image layer stack for the layered image file, the iterator points to the first (e.g., top) image layer in the image layer stack (assuming the image layer stack includes at least one image layer). Because the iterator points to an existing image layer in the image layer stack, the layering system102determines that the iterator is valid. As discussed below, if the iterator does not point to an existing image layer, the iterator is not valid, and (in some cases) the layering system102completes a process of opening the layered image file.

In response to determining that the image layer stack iterator is valid, the layering system102performs an act308of determining whether a current image layer (e.g., an image layer to which the iterator points) is compatible with the feature-restricted image application. For example, the layering system102can determine whether the current image layer includes image layer data that the feature-restricted image application is unable to process. To illustrate, the layering system102may determine that the feature-restricted image application is unable to properly display/render the current image layer, which can affect the display accuracy of the image content within the feature-restricted image application. In some embodiments, such image layer data can include adjustment layers that modify color or tonal properties of one or more other image layers in the image layer stack.

When performing the act308, in some cases, the layering system102determines whether the current image layer includes data associated with features unavailable in the feature-restricted image application. For instance, the layering system102can determine that the feature-restricted image application does not have a feature for performing a particular edit operation associated with an image layer in the layered image file. The feature sets for each of the layered image application and the feature-restricted image application may depend on the purposes of each image application. To illustrate, if the layered image application is a raster-based image editor that generates and modifies digital image content using a variety of tools, a digital photo editor that modifies digital photographs may lack many of the editing tools of the raster-based image editor. Similarly, the raster-based image editor may lack some of the editing tools of the digital photo editor.

In one or more embodiments, in response to determining that the current image layer is compatible with the feature-restricted image application, the layering system102performs an act310of generating an editable layer for the current image layer. Specifically, the layering system102can convert a compatible image layer in a format associated with the layered image application to an editable layer in a format associated with the feature-restricted image application. For instance, the layering system102can move or copy image layer data stored in an image layer associated with the layered image application to an image layer associated with the feature-restricted image application (e.g., in a format that the feature-restricted image application recognizes as an image layer). By moving or copying the image layer data, the layering system102can retain all of the information contained within the current image layer. The layering system102can also allow any edit operations to the editable layer within the feature-restricted image application that are also applicable in the layered image application due to the compatibility of the feature-restricted image with the current image layer.

In addition to generating an editable layer, in certain implementations, the layering system102generates or otherwise determines a layer identifier for the editable layer based on the current image layer in the image layer stack. To illustrate, the layering system102can determine an identifier of the current image layer assigned by the layered image application. The layering system102can also assign the determined identifier to the new image layer corresponding to the feature-restricted image application. This may allow the layering system102to more easily identify a mapping between the image layers of the respective image applications, though the layering system102may use any suitable naming convention for the generated image layers in an image layer mapping.

If the current image layer is incompatible with the feature-restricted image application (e.g., based on properties and contents of the current image layer), the layering system102can instead convert the current image layer to a format compatible with the feature-restricted image application. As illustrated byFIG. 3A, the layering system102performs an act312of identifying additional incompatible image layers. For instance, the layering system102can determine whether one or more other image layers are grouped with the current image layer, such as based on content of the other image layer(s), proximity to the current image layer in the image layer stack, or whether an image layer indicates relationship to another image layer (e.g., in a manual or automatic image layer grouping). The layering system102can thus identify one or more image layers incompatible with the feature-restricted image application and associated with one another.

As further illustrated inFIG. 3A, in one or more embodiments, the layering system102also performs an act314of determining whether to place the image layer to the bottom of the layer stack associated with the feature-restricted image application. If the current image layer has certain properties that affect other image layers in the image, for instance, the layering system102may determine that the resulting edit-restricted layer should be placed at (e.g., pinned to) the bottom of the image layer stack. To illustrate, the layering system102may make such a determination based on the top-most image layer of the corresponding edit-restricted layer that the layering system102will generate for the incompatible image layers. For example, as previously mentioned, adjustment layers that modify color or tone of other image layers below the adjustment layers may result in such a determination.

As further shown inFIG. 3A, after identifying one or more related image layers incompatible with the feature-restricted image application, the layering system102performs an act316of generating an edit-restricted layer. For instance, the layering system102can generate the edit-restricted layer representing the one or more incompatible layers by creating a single image layer with a specific set of attributes that limits the type of edit operations that a user may perform on the edit-restricted layer within the feature-restricted image application. According to one or more embodiments, the layering system102generates an attributes set for the edit-restricted layer to prevent the feature-restricted image application from performing any edit operations if the edit-restricted layer represents more than one image layer.

In one or more alternative embodiments, if the edit-restricted layer represents only a single image layer, the layering system102identifies a subset of edit operations available within the feature-restricted image application. Specifically, the layering system102may allow the feature-restricted image application to perform certain operations that do not change the image contents of the image layers represented by the edit-restricted layer. For example, the layering system102can perform operations such as, but not limited to, a layer name operation, a layer opacity operation, a layer lock operation, and a layer blend mode operation. Such operations may modify metadata identifying the edit-restricted layer or modify how the edit-restricted layer affects other image content in the layered image file.

AsFIG. 3Aillustrates, in connection with generating the edit-restricted layer and the corresponding attributes set, the layering system102also performs an act318of creating an image layer pointer for the generated image layer. In particular, the layering system102can generate a mapping between the generated image layer for the feature-restricted image application and the corresponding image layer(s) of the layered image application. Mapping the generated image layer to the corresponding image layers from the image layer stack allows the layering system102to convert the generated image layers back into a format for use in the layered image application when storing image layer data from the feature-restricted image application to the layered image file.

In one or more embodiments, the layering system102generates a pointer for an edit-restricted layer based on at least one identifier of the corresponding incompatible image layer(s). For instance, the layering system102can determine a layer identifier for a top/first layer of the incompatible image layer(s). The layering system102can then assign the determined layer identifier to the edit-restricted layer to indicate that the edit-restricted layer corresponds to the top layer of the incompatible image layer(s). In one or more embodiments, the layering system102also includes other indicators, such as a number appended to the end of the determined layer identifier to indicate how many total image layers correspond to the edit-restricted layer. In alternative embodiments, the layering system102may generate the pointer based on a combination of layer identifiers for a plurality of image layers corresponding to the edit-restricted layer.

After generating an image layer and mapping the image layer to the corresponding image layer(s) from the image layer stack, the layering system102can proceed with analyzing a subsequent image layer in the image layer stack. Specifically, as shown inFIG. 3A, the layering system102performs an act320of moving the image layer stack iterator to the next image layer in the image layer stack that has not been analyzed. For example, after generating an editable layer for an image layer, the layering system102can move the image layer stack iterator to the next image layer in the image layer stack (e.g., down one image layer). Additionally, after generating an edit-restricted layer for one or more incompatible image layers, the layering system102can move the image layer stack iterator to the next image layer in the image layer stack after the last image layer mapped to the edit-restricted layer. Thus, the layering system102can move the image layer stack iterator any number of positions down in the image layer stack based on the current image layer and any additional image layers analyzed in connection with the current image layer.

After moving the image layer stack iterator to the next image layer in the image layer stack to be analyzed, in some cases, the layering system102again determines whether the image layer stack iterator is valid. If there are more image layers in the image layer stack to analyze, the layering system102can repeat the acts previously described (e.g., acts308-320) for each image layer (or group of image layers) in the image layer stack until the image layer stack iterator is no longer valid. Thus, the layering system102may generate a new image layer stack including a plurality of edit-restricted layers and/or a plurality of editable layers based on the image layers and order of image layers in the original image layer stack.

When the layering system102has finished analyzing all of the image layers in the image layer stack of the layered image file, the layering system102performs the act322of displaying the image content of the layered image file in the feature-restricted image application. In particular, the layering system102can use the new layer stack with the generated editable and edit-restricted layers to accurately display image content from the layered image file within the feature-restricted image application. Additionally, the layering system102can display image layers or image layer data from the new image layer stack with the image content (e.g., next to the image content within a user interface).

Once the layering system102displays the image content within the feature-restricted image application, the layering system102may also modify or rearrange the image content and/or the image layers based on user input. For instance, the feature-restricted image application may edit the image content by generating image layers, modifying image layers, or removing image layers based on the available set of edit operations for each image layer. Accordingly, the layering system102may modify editable layers using one or more edit operations available within the feature-restricted image application, and which are also available within the layered image application. Furthermore, for edit-restricted layers, the layering system102may limit edit operations or prevent the use of edit operations based on the established attributes of the edit-restricted layers.

As described in relation toFIG. 3A, the layering system102can perform operations for converting image layer data from a formatting for one image application to a formatting for another image application within a single layered image file. The operations allow the layering system102to open a layered image file using a plurality of different image applications while retaining image layer data and accurately displaying image content within each of the image applications. Accordingly, the acts and operations illustrated and described above in relation toFIG. 3Aprovide the corresponding acts for a step for converting at least one image layer of a layered image file to an edit-restricted layer.

As mentioned,FIG. 3Billustrates the layering system102storing image layer data from a feature-restricted image application back to a layered image file. Specifically,FIG. 3Billustrates a series of acts301for converting image layers formatted for a feature-restricted image application to image layers formatted for a layered image application in a layered image file. For example,FIG. 3Billustrates the layering system102performing an act324for initiating a save operation to save image content to a layered image file. In one or more embodiments, the layering system102receives a request from a computing device to save the image content to a layered image file. In some embodiments, such a layered image file was originally created using a layered image application and then opened within the feature-restricted image application. The layering system102may receive the save operation after a user has made one or more modifications to image layer data associated with the image content via the feature-restricted image application. If the layering system102determines that no modifications to the image content have occurred after opening the layered image file within the feature-restricted image application, the layering system102can revert the layered image file to a version of the layered image file stored in memory.

As shown inFIG. 3B, in response to the request to save the image content to the layered image file, the layering system102performs an act326of setting an image layer stack iterator for the image layer data associated with the feature-restricted image application. To illustrate, the layering system102can set the iterator to a last (e.g., bottom) image layer of the image layer stack. In addition, the layering system102can set an iterator for the image layer stack associated with the layered image application (e.g., an image stack stored in memory for a version of the layered image file at the time of opening the layered image file in the feature-restricted image application). Thus, the layering system102can set image layer stack iterators for iterating through a plurality of image layer stacks associated with the feature-restricted image application and the layered image application in parallel to verify the image layer data and ensure accuracy when converting the image layer data back to a format associated with the layered image application.

In one or more embodiments, as illustrated inFIG. 3B, after initializing iterators for the image layer stacks, the layering system102performs an act328of determining whether the image layer stack iterator is valid. More specifically, the layering system102determines whether the image layer stack iterator corresponding to the feature-restricted image application is valid. Iterating through the entirety of the image layer stack associated with the feature-restricted image application allows the layering system102to write all of the relevant image layer data to the layered image file. As described in more detail below, once the layering system102has iterated through the image layer stack associated with the feature-restricted image application, in some cases, the layering system102completes the save operation.

As further illustrated byFIG. 3B, in response to determining that the image layer stack iterator is valid (e.g., points to an existing image layer), the layering system102performs an act330of determining whether the current image layer identifier (“ID”) for the current image layer corresponds to a previous image layer ID. In particular, the layering system102can determine whether an image layer ID for the current image layer in the image layer stack associated with the feature-restricted image application is mapped to an image layer ID for an image layer in the image layer stack associated with the layered image application. The layering system102can use a mapping generated between image layers in the image layer stacks when opening the layered image file.

If the layering system102does not find a matching layer ID between the current image layer and an image layer in the previous image layer stack associated with the layered image application,FIG. 3Billustrates that the layering system102performing an act332of generating a new image layer formatted for the layered image application. For example, the layering system102can generate a new image layer including image layer data from the current image layer in the image layer stack associated with the feature-restricted image application at the current location in the image layer stack associated with the layered image application. The new image layer can be formatted for the layered image file including any metadata or other layer image data that allows the layered image application to accurately read and display the new image layer. In one or more embodiments, if the image layer formatted for the feature-restricted image application includes image layer data incompatible with the layered image application, the layering system102can perform similar operations described above inFIG. 3Afor generating the new image layer as an edit-restricted layer for displaying the new image layer within the layered image application.

As illustrated inFIG. 3B, in response to finding a matching layer ID between the current image layer and an image layer in the previous image layer stack, the layering system102can optionally perform an act334of moving a corresponding image layer to the current position in the image layer stack associated with the layered image application. Specifically, the layering system102can first determine whether the matching layer IDs are at the same relative position in the image layer stacks associated with the feature-restricted image application and the layered image application. If not, the layering system102moves the corresponding image layer formatted for the layered image application to the current position in the corresponding image layer stack. If the matching layer IDs are at the same relative position, the layering system102skips the act of moving an image layer.

Additionally, the layering system102can determine whether the feature-restricted image application made any modifications to the current image layer. As shown inFIG. 3B, in response to determining that the feature-restricted image application made changes to the current image layer, the layering system102performs an act336of applying edits made to the current image layer to a corresponding image layer. To illustrate, in response to detecting edits made to an editable layer, the layering system102can perform the same edits to the corresponding image layer in the image layer stack formatted for the layered image application (e.g., by replacing image layer data for the corresponding image layer with new image layer data or adding image layer data to the corresponding image layer).

Additionally, in response to detecting edits made to an edit-restricted layer (e.g., to the layer name, opacity, layer lock, or blend mode), the layering system102can apply the same edits to the corresponding incompatible image layer in the image layer stack associated with the layered image application. For instance, in one or more embodiments, the layering system102can save any changes made to the edit-restricted layer back to the incompatible image layer (e.g., if the edit-restricted layer corresponds to a single incompatible image layer). In response to an edit-restricted layer corresponding to a plurality of incompatible image layers, in one or more embodiments, the layering system102still allows one or more edit operations to the edit-restricted layer. The layering system102can thus apply the edit(s) to the plurality of layers represented by the edit-restricted layer.

After analyzing the current layer and generating a new image layer or performing edits to one or more corresponding image layers, the layering system102performs an act338of moving the image layer stack iterators for the image layer stack associated with the feature-restricted image application to the next image layer. In particular, the layering system102can move the iterator to the next image layer in the image layer stack (e.g., up one layer). The layering system102can also move the image layer stack iterator for the image layer stack associated with the layered image application. The layering system102can thus keep track of the position in each image layer stack in parallel.

After moving the image layer stack iterator to the next image layers in the image layer stacks to be analyzed, in some cases, the layering system102determines whether the image layer stack iterator for the next image layer in the image layer stack associated with the feature-restricted image application is valid. If there are more image layers in the image layer stack to analyze, the layering system102can repeat the acts previously described (e.g., acts330-338) for each image layer in the image layer stack until the image layer stack iterator is no longer valid. Thus, the layering system102may ensure that the image layers in the image layer stack associated with the layered image application correspond to the image layers in the image layer stack associated with the feature-restricted image application at the respective positions.

As shown inFIG. 3B, in response to determining that the image layer stack iterator is not valid, the layering system102performs an act340of deleting previous image layers beyond the current image layer stack iterator in the image layer stack associated with the layered image application. Specifically, a computing device executing the feature-restricted image application may delete or combine image layers from the layered image file based on user input. The layering system102can determine whether a computing device has deleted or combined image layers via the feature-restricted image application based on the image layer stack associated with the feature-restricted image application having fewer image layers than the image layer stack associated with the layered image application. Accordingly, deleting previous image layers beyond the image layer stack iterator allows the layering system102to ensure accurate image layer conversion across image applications.

As further shown inFIG. 3B, after deleting previous image layers, the layering system102performs the act342of storing the layered image file with the updated image layer data with the correct formatting for the layered image application. When the layering system102stores the updated image layer data to the layered image file, the layering system102can open the layered image file with the layered image application in response to an open request from a user. Thus, the layering system102can store image layer data across a plurality of image applications having different feature sets using a single layered image file.

As mentioned, the layering system102can open a layered image file in a plurality of image applications. In accordance with one or more embodiments,FIGS. 4A-4Iillustrate graphical user interfaces and layer image data associated with different image applications. As an overview,FIGS. 4A and 4Iillustrate graphical user interfaces from the perspective of a client device implementing computer-executable instructions from a layered image application to perform certain actions for the layering system102.FIGS. 4B and 4Hillustrate image layer data associated with a layered image file.FIGS. 4C-4Gillustrate graphical user interfaces from the perspective of a client device implementing computer-executable instructions from a feature-restricted image application to perform certain actions for the layering system102.

As shown inFIG. 4A, in one or more embodiments, a client device402can execute instructions from a layered image application400to open, create, and edit image content404with image layer data. Specifically, the image content404may include a plurality of layers406including different elements of the image content404. For instance, the layers406can include individual objects or visual characteristics of the image content404(or of specific components of the image content404) depending on how the client device402generates and organizes the elements of the image content404based on user input. To illustrate, the layers406can be displayed in an order indicating whether a given layer is in front of or behind another layer based on whether the given layer is above or below the other layer in the user interface.

As further shown inFIG. 4A, the layered image application400includes a plurality of tools408for a user to create and edit image content. In particular, the tools408include tools for creating, modifying, or deleting layers (e.g., the layers406) of image content. For example, the tools408can include tools for performing operations to add objects, cut objects, move objects, move objects, copy objects, or delete objects. Additionally, the tools408can include tools for performing operations to modify other visual characteristics (e.g., colors, tones, brightness, contrast) of objects or layers of the image content404. In at least some embodiments, the layering system102applies filters that perform specific modifications to the layers406based on user input, such as blur filters, sharpen filters, warping filters, noise filters, or other filters.

According to one or more embodiments, the layering system102generates a new layer for each modification to one or more other layers of the image content404. Additionally, the layering system102applies a plurality of modifications within a single layer. For example,FIG. 4Aillustrates the layers406including objects displayed in different locations within the image content404as well as modifications to one or more other layers.

In one or more embodiments, the layering system102groups layers together within the layered image application400based on user input. For instance,FIG. 4Aillustrates a subset of layers410grouped based on each of the layers in the subset of layers410applying some effect to one or more other layers in the subset of layers410. To illustrate, one or more layers of the subset of layers410can include filters or adjustments that change attributes of an underlying object layer that includes an object displayed in the image content404. Because the filters or adjustments in the subset of layers410apply only to the object layer, and not to any of the other layers in the image content404, the layers corresponding to the filters or adjustments are grouped with the object layer.

As mentioned, the layering system102can store the image content404in a layered image file and then open the layered image file using a different application. In particular, the client device402can open the layered image file in a feature-restricted image application that has a different feature set than the layered image application400based on a user request to open the layered image file. When opening the layered image file in the feature-restricted image application, in some embodiments, the layering system102first converts the layer image data from a format associated with the layered image application400to a format associated with the feature-restricted image application.

FIG. 4Billustrates for the layering system102converting layers from a first format in a first image layer stack412to a second format in a second image layer stack414. Consistent withFIG. 3Aabove, the layering system102can iterate through the first image layer stack412associated with the layered image application400to determine whether each of the layers in the first image layer stack412is compatible with the feature-restricted image application. For instance, the layering system102can analyze the layers to determine whether the layers include any attributes that the feature-restricted image application cannot process (e.g., display or features that the feature-restricted image application lacks).

Additionally, in connection with determining whether each layer of the first image layer stack412is compatible with the feature-restricted image application, the layering system102can then convert the image layer data into a format that allows accurate display of the image content404within the feature-restricted image application. To illustrate, the layering system102can convert compatible layers such as layer416ainto an editable layer418acontaining the image layer data from the layer416a.Additionally, the layering system102can convert incompatible layers such as layers416binto an edit-restricted layer418b.The layering system102can thus convert all of the layers from the first image layer stack412into one or more editable layers and/or one or more edit-restricted layers based on the image layer data of each respective layer.

After converting the image layer data in a layered image file into a format compatible with a feature-restricted image application, the layering system102can then display the image content404from the layered image file in a user interface associated with the feature-restricted image application. For example,FIG. 4Cillustrates the client device402presenting a graphical user interface of a feature-restricted image application420. AlthoughFIG. 4Cillustrates the feature-restricted image application420operating on the client device402that operates the layered image application400, the layering system102can open layered image files using image applications across a plurality of client devices.

As illustrated inFIG. 4C, the layering system102displays the image content404from the layered image file in the graphical user interface of the feature-restricted image application420such that the image content404appears the same as in the layered image application400. The layering system102accomplishes this by the conversion process described with respect to FIGS.3A and4B. As further shown inFIG. 4C, the layering system102displays image layer data associated with the image content404within the graphical user interface of the feature-restricted image application420. In particular, the layering system102can display the layers from the second image layer stack414ofFIG. 4Bin a portion of the feature-restricted image application420.

In one or more embodiments, the layering system102modifies the image content404in a variety of ways based on detecting user interactions associated with the image content404. For instance, because the layer image data can include editable layers and edit-restricted layers, the layering system102can display information indicating whether each layer is editable or edit-restricted. To illustrate, if a layer is edit-restricted, the layering system102can display an icon422on the corresponding edit-restricted layer indicating that the edit-restricted layer has a limited set of available operations. In one or more embodiments, the icon422indicates an image application that the layering system102used to generate the underlying layers. Additionally, if a layer is editable, the layering system102can display the corresponding image content or an indicator of the layer type as a layer icon for the editable layer.

Furthermore, the layering system102can provide visual indicators to inform a user that a layer corresponds to a single layer or to a plurality of layers. For example, if an edit-restricted layer represents more than one incompatible layer, in some cases, the layering system102provides a multi-layer indicator in connection with the edit-restricted layer (e.g., a layer icon indicating stacked layers). Alternatively, if a layer (editable or edit-restricted) represents a single layer, in some cases, the layering system102provides a single-layer indicator in connection with the layer (e.g., a layer icon indicating a single layer).

As described previously, the layering system102can accurately display, within a feature-restricted image application, layered image content from a layered image file that was originally formatted for a layered image application with a different feature set. The layering system102can also perform edit operations on certain layers—while limiting edit operations on other layers—based on detecting user interactions with layers.FIGS. 4D-4Eillustrate different available edit operations for different layer types within the feature-restricted image application420. For instance,FIG. 4Dillustrates the layering system102unlocking layer properties426aand a first set of available actions428afor the editable layer418a.FIG. 4Eillustrates the layering system102locking layer properties426band a second set of available actions428bdifferent from the first set of available actions428afor the edit-restricted layer418b.

In one or more embodiments, as shown inFIG. 4D, the client device402presents a set of unlocked layer properties426afor modifying various attributes of the editable layer418abased on executable instructions from the feature-restricted image application420. Because the editable layer418aincludes image layer data that is compatible with the feature-restricted image application420, the layering system102may modify the unlocked layer properties426aof the editable layer418awithin the feature-restricted image application420. According to one or more embodiments, the feature-restricted image application420may include computer-executable instructions for a limited set of available edit operations relative to the layered image application400. According to one or more alternative embodiments, the feature-restricted image application420may include computer-executable instructions for the same set of edit operations available for compatible layer image data as in the layered image application400.

Additionally, the layering system102can provide an additional set of available actions428athat a user can perform on the editable layer418a.For instance, the set of available actions428acan include operations to interact with the layer itself (e.g., rather than the layer properties associated with the content of the layer). To illustrate, the set of available actions428acan include operations for duplicating, copying, cutting, or merging the editable layer418a.The set of available actions428afor the editable layer418acan also include operations for creating and editing layer masks, editing a layer transparency, or locking a layer from being modified.

FIG. 4Eillustrates the client device402presenting a set of locked layer properties426bassociated with attributes of the editable layer418awithin a graphical user interface of the feature-restricted image application420. In contrast to the editable layer418a,the edit-restricted layer418bincludes image layer data that is not compatible with the feature-restricted image application420. Thus, the layering system102may limit, or prevent, the feature-restricted image application420from modifying the locked layer properties426bof the edit-restricted layer418b.In one or more embodiments, the layering system102can indicate the limits on the edit operations by graying out or otherwise modifying an appearance of the locked layer properties426b.The layering system102may also provide the current layer properties of the edit-restricted layer418bin the feature-restricted image application420for informational purposes.

As suggested above, the layering system102can provide a set of available actions428bfor the edit-restricted layer418bthat is different than the set of available actions428afor the editable layer418a.For example, the set of available actions428bfor the edit-restricted layer418bcan include operations to interact with the layer itself. To illustrate, the set of available actions428bcan include operations for duplicating, copying, cutting, or merging the edit-restricted layer418b.The set of available actions428bmay exclude operations for performing other operations, such as creating and editing layer masks, etc., that are available for editable layers.

As indicated by,FIG. 4F, the layering system102can remove edit restrictions on an edit-restricted layer within the feature-restricted image application420. By removing such edit restrictions, the layering system102allows for more edit operations on the layer properties of the edit-restricted layer. As illustrated byFIG. 4F, for instance, the layering system102flattens the edit-restricted layer to create a flattened layer430that is compatible with the feature-restricted image application420based on detecting a user request to flatten the edit-restricted layer. Flattening the edit-restricted layer may remove the layer properties from the edit-restricted layer (and remove the edit-restricted layer itself, in some implementations) such that the flattened layer430no longer has the editable modifications associated with the individual underlying layers (e.g., a user can no longer revert/delete individual layers using the layered image application400).

In one or more embodiments, the layering system102generates the flattened layer430within the feature-restricted image application420by accessing features of the layered image application400. The layering system102may access the features of the layered image application400if the feature-restricted image application420is unable to properly display a corresponding edit-restricted layer based on a lack of necessary features in the feature-restricted image application420. Alternatively, the feature-restricted image application420may include computer-executable instructions that (upon execution) cause the client device402to accurately display and flatten the edit-restricted layer. Accordingly, the layering system102may access features of the feature-restricted image application420to generate the flattened layer430.

In one or more embodiments, the layering system102may automatically generate a flattened layer version of an edit-restricted layer if, when opening a layered image file, the layering system102determines that the feature-restricted image application420is not able to correctly display image layer data for one or more layers. As shown inFIG. 4G, the layering system102automatically (e.g., without a user request) generates a flattened layer copy432of the edit-restricted layer418bwhen opening the layered image file, according to one or more embodiments. As mentioned previously, the layering system102can also move the edit-restricted layer418bto a specific place in the image layer stack (e.g., by pinning the edit-restricted layer418bto the bottom of the image layer stack) in response to determining that a corresponding incompatible layer (e.g., the top layer) associated with the edit-restricted layer424is an adjustment layer (or similar incompatible layer). The layering system102can then place the flattened layer copy432in the correct position within the image layer stack.

After editing a layered image file in a feature-restricted image application, the layering system102can store the modified image layer data back to a corresponding layered image file for viewing/editing in a layered image application. For example,FIG. 4Hillustrates for the layering system102converting layers from a format in the second image layer stack414associated with the feature-restricted image application420back to a format in the first image layer stack412associated with the layered image application400. When performing such a conversion, the layering system102ensures that the corresponding layers in each image layer stack are in consistent positions and that any edits made to the layers in the second image layer stack414within the feature-restricted image application420are saved back to the corresponding layers in the first image layer stack412, as described previously with respect toFIG. 3B. The layering system102can also copy over new layers created in the feature-restricted image application420and delete corresponding layers removed using the feature-restricted image application420.

As indicated above, the layering system102can open the updated layered image file using the layered image application400. AsFIG. 4Iillustrates, the client device402presents the updated layer image data for the image content404in a set of layers434based on computer-executable instructions from the layered image application400. Because the layering system102can retain the image layer data for layers that are incompatible with the feature-restricted image application420(e.g., the subset of layers410), the layering system102can display the corresponding layers without any loss of image layer data in the layered image application. Additionally, the layering system102can display any additional layers or layer modifications made to the image content404, including modifications to the order of the layers434. Thus, the layering system102can accurately display the image content404across a plurality of image applications with different feature sets.

As described in relation to the previous figures, the layering system102can perform operations for lossless exchange of image layer data between image applications. The operations allow the layering system102to accurately convert image layer data between image applications using a layered image file.FIG. 5illustrates a detailed schematic diagram of an embodiment of the cross-application layering system102described above. As shown, the layering system102can be implemented in a digital image management system110on computing device(s)500(e.g., a client device and/or server device as described inFIG. 1and as further described below in relation toFIG. 7). Additionally, the layering system102can include, but is not limited to, a digital image manager502, an application manager504, an image layer manager506, a user interface manager508, and a data storage manager510. The layering system102can be implemented on any number of computing devices. For example, the layering system102can be implemented in a distributed system of server devices for digital image management. The layering system102can also be implemented within one or more additional systems. Alternatively, the layering system102can be implemented on a single computing device such as a single client device.

In one or more embodiments, each of the components of the layering system102is in communication with other components using any suitable communication technologies. Additionally, the components of the layering system102can be in communication with one or more other devices including other computing devices of a user, server devices (e.g., cloud storage devices), licensing servers, or other devices/systems. It will be recognized that although the components of the layering system102are shown to be separate inFIG. 5, any of the subcomponents may be combined into fewer components, such as into a single component, or divided into more components as may serve a particular implementation. Furthermore, although the components ofFIG. 5are described in connection with the layering system102, at least some of the components for performing operations in conjunction with the layering system102described herein may be implemented on other devices within the environment.

The components of the layering system102can include software, hardware, or both. For example, the components of the layering system102can include one or more instructions stored on a computer-readable storage medium and executable by processors of one or more computing devices (e.g., the computing device(s)500). When executed by the one or more processors, the computer-executable instructions of the layering system102can cause the computing device(s)500to perform the lossless image layer data exchange operations described herein. Alternatively, the components of the layering system102can include hardware, such as a special purpose processing device to perform a certain function or group of functions. Additionally, or alternatively, the components of the layering system102can include a combination of computer-executable instructions and hardware.

Furthermore, the components of the layering system102performing the functions described herein with respect to the layering system102may, for example, be implemented as part of a stand-alone application, as a module of an application, as a plug-in for applications, as a library function or functions that may be called by other applications, and/or as a cloud-computing model. Thus, the components of the layering system102may be implemented as part of a stand-alone application on a personal computing device or a mobile device. Alternatively, or additionally, the components of the layering system102may be implemented in a suite of applications or “apps,” including, but not limited to ADOBE CREATIVE CLOUD, ADOBE PHOTOSHOP, ADOBE PHOTOSHOP ELEMENTS, ADOBE FRESCO, and ADOBE ILLUSTRATOR software. “ADOBE,” “CREATIVE CLOUD,” “PHOTOSHOP,” “PHOTOSHOP ELEMENTS,” and “ADOBE ILLUSTRATOR” are registered trademarks of Adobe Inc. in the United States and/or other countries.

As mentioned, the layering system102can include a digital image manager502. The digital image manager502can facilitate the management of digital image files across a plurality of image applications (e.g., image editing applications that support layered image files). For example, the digital image manager502can store image layer data to digital image files and read image layer data from digital image files using one or more image applications. The digital image manager502can also provide digital image management across a plurality of applications in a distributed storage environment.

The layering system102can also include an application manager504to manage image applications in connection with layered image files. Specifically, the application manager504can manage user access to a plurality of image applications. The application manager504can also use the image applications to perform various operations associated with creating, viewing, and editing layered image content. In one or more embodiments, the application manager504can also access image application features from different image applications while a user is using a specific image application.

Additionally, the layering system102an include an image layer manager506to manage image layer data associated with layered image files in connection with a plurality of image applications. For instance, the image layer manager506can perform operations for converting image layer data from a first format (e.g., a format associated with a layered image application) to a second format (e.g., a format associated with a feature-restricted image application). The image layer manager506can also perform operations for converting the image layer data back from the second format to the first format.

The layering system102can also include a user interface manager508to manage graphical user interfaces for a plurality of image applications. In particular, the user interface manager508can cause user client devices to display image content from layered image files within a plurality of different image applications. Additionally, the user interface manager508can detect interactions with image content (e.g., image layer data) via one or more image applications. The user interface manager508can also communicate with one or more other components (e.g., the digital image manager502, the application manager504, or the image layer manager506) to store and display modifications to image content.

Additionally, the layering system102also includes a data storage manager510(that comprises a non-transitory computer memory/one or more memory devices) that stores and maintains data associated with layered image files and image layer data in connection with a plurality of image applications. For example, the data storage manager510can store the layered image files and information associated with interactions with the layered image files. To illustrate, the data storage manager510can store the layered image files, as well as temporary information associated with the image layer data (e.g., the image layers and modifications to the image layers in temporary memory).

Turning now toFIG. 6, this figure shows a flowchart of a series of acts600of generating an edit-restricted layer representing an image layer data incompatible between image editing applications in accordance with one or more implementations. WhileFIG. 6illustrates acts according to one embodiment, alternative embodiments may omit, add to, reorder, and/or modify any of the acts shown inFIG. 6. The acts ofFIG. 6can be performed as part of a method. Alternatively, a non-transitory computer readable medium can comprise instructions, that when executed by one or more processors, cause a computing device to perform the acts ofFIG. 6. In still further embodiments, a system can perform the acts ofFIG. 6.

As shown, the series of acts600includes an act602of identifying a request to open a layered image file. For example, act602involves identifying a request to open in a feature-restricted image application a layered image file formatted for a layered image application. Act602can involve receiving a request to open the layered image file in the feature-restricted image application, wherein the layered image file comprises a file extension associated with the layered image application.

The series of acts600also includes an act604of determining that an image layer is compatible. For example, act604involves determining that at least one image layer of the layered image file includes a characteristic incompatible with the feature-restricted image application. Act604can involve, for example, determining that a feature set of edit operations or capabilities of the feature-restricted image application is not able to process image layer data of the at least one image layer. Act604can also involve analyzing image layers from an image layer stack within the layered image file to identify an image layer compatible with the feature-restricted image application, wherein the image layer stack comprises the image layer compatible with the feature-restricted image application and the at least one image layer including the characteristic incompatible with the feature-restricted image application.

Act604can also involve determining that the edit-restricted layer corresponds to one image layer. Act604can then involve limiting edit operations available for editing the edit-restricted layer within the feature-restricted image application. For example, act604can involve determining a subset of edit operations that are available for editing the edit-restricted layer and excluding one or more other edit operations from being applied to the edit-restricted layer.

Act604can also involve determining that the edit-restricted layer corresponds to a plurality of image layers. For example, as part of act604, or as an additional act, the series of acts600can include determining that a plurality of image layers of the layered image file includes characteristics incompatible with the feature-restricted image application, wherein the plurality of image layers comprise the at least one image layer.

Additionally, the series of acts600includes an act606of generating an edit-restricted layer for the incompatible image layer. For example, act606involves generating an edit-restricted layer representing the at least one image layer, wherein the edit-restricted layer is compatible with the feature-restricted image application. Act606can involve setting attributes for the edit-restricted layer that indicate that one or more edit operations are not available for the edit-restricted layer. Act606can also involve assigning an identifier to the edit-restricted layer based on an identifier of the at least one image layer.

Act606can also involve generating an edit-restricted layer representing a plurality of image layers comprising the at least one image layer. Act606can then involve preventing editing of the edit-restricted layer representing the plurality of image layers within the feature-restricted image application. For example, act606can involve preventing one or more edit operations from being applied to the edit-restricted layer corresponding to the plurality of image layers. Act606can also involve assigning to the edit-restricted layer an identifier based on an identifier of a top image layer of the plurality of image layers.

As part of act606, or as an additional act, the series of acts600can also include determining that an image layer of a plurality of image layers represented by the edit-restricted layer corresponds to a specific type of image layer not compatible with the feature-restricted image application. The series of acts600can then include placing the edit-restricted layer at a specific position in an image layer stack based on the image layer corresponding to the specific type of image layer. Additionally, the series of acts600can also include automatically generating, in response to the edit-restricted image layer comprising the image layer of the specific type of image layer, a flattened image layer copy of the edit-restricted layer to display within the feature-restricted image application.

As part of act606, or as an additional act, the series of acts600can include determining that an additional image layer of the layered image file applies a visual effect to at least one other image layer of the layered image file, wherein the additional image layer is not compatible with the feature-restricted image application. The series of acts600can also involve generating, based on determining that the additional image layer is not compatible with the feature-restricted image application, a flattened image layer representing the additional image layer and the at least one other image layer, wherein the flattened image layer is editable within and compatible with the feature-restricted image application.

The series of acts600further includes an act608of providing an image based on the edit-restricted layer. For example, act608involves providing, for display within the feature-restricted image application on a display device, an image corresponding to the layered image file based on the edit-restricted layer. Act608can also involve providing the edit-restricted layer representing a plurality of image layers for display within the feature-restricted image application as a combined layer.

The series of acts600can also include determining that a first additional image layer of the layered image file is compatible with the feature-restricted image application and a second additional image layer of the layered image file includes a characteristic incompatible with the feature-restricted image application, wherein the first additional image layer is between the at least one image layer and the second additional image layer in an image layer stack of the layered image file. The series of acts600can then include generating an additional edit-restricted layer representing the second additional image layer, wherein the additional edit-restricted layer is compatible with the feature-restricted image application. Additionally, the series of acts can involve providing, for display within the feature-restricted image application on the display device, the image based on the additional edit-restricted layer.

The series of acts600can also include identifying a request to store to the layered image file a plurality of image layers from an image layer stack corresponding to the feature-restricted image application. The series of acts600can include determining a position of the edit-restricted layer in the image layer stack. Additionally, the series of acts600can include storing the at least one image layer corresponding to the edit-restricted layer at the position of the edit-restricted layer in a new image layer stack corresponding to the layered image application.

The series of acts600can also include determining that an edit operation has been performed on the edit-restricted layer within the feature-restricted image application. Furthermore, the series of acts600can include applying the edit operation to the at least one image layer within the new image layer stack.

Additionally, the series of acts600can include determining that an additional image layer of the plurality of image layers in the image layer stack does not correspond to an image layer associated with the layered image application. The series of acts600can then include generating, from the additional image layer, a new image layer compatible with the layered image application, and storing the new image layer to the new image layer stack.

In addition (or in the alternative) to the acts described above, some embodiments involve performing a step for converting at least one image layer of the layered image file to an edit-restricted layer. For instance, the algorithms and acts described in relation toFIG. 3Acan comprise the corresponding acts and/or algorithms for a step for a step for converting at least one image layer of the layered image file to an edit-restricted layer.

FIG. 7illustrates a block diagram of exemplary computing device700that may be configured to perform one or more of the processes described above. One will appreciate that one or more computing devices such as the computing device700may implement the system(s) ofFIG. 1. As shown byFIG. 7, the computing device700can comprise a processor702, a memory704, a storage device706, an I/O interface708, and a communication interface710, which may be communicatively coupled by way of a communication infrastructure712. In certain embodiments, the computing device700can include fewer or more components than those shown inFIG. 7. Components of the computing device700shown inFIG. 7will now be described in additional detail.

In one or more embodiments, the processor702includes hardware for executing instructions, such as those making up a computer program. As an example, and not by way of limitation, to execute instructions for dynamically modifying workflows, the processor702may retrieve (or fetch) the instructions from an internal register, an internal cache, the memory704, or the storage device706and decode and execute them. The memory704may be a volatile or non-volatile memory used for storing data, metadata, and programs for execution by the processor(s). The storage device706includes storage, such as a hard disk, flash disk drive, or other digital storage device, for storing data or instructions for performing the methods described herein.

The I/O interface708allows a user to provide input to, receive output from, and otherwise transfer data to and receive data from computing device700. The I/O interface708may include a mouse, a keypad or a keyboard, a touch screen, a camera, an optical scanner, network interface, modem, other known I/O devices or a combination of such I/O interfaces. The I/O interface708may include one or more devices for presenting output to a user, including, but not limited to, a graphics engine, a display (e.g., a display screen), one or more output drivers (e.g., display drivers), one or more audio speakers, and one or more audio drivers. In certain embodiments, the I/O interface708is configured to provide graphical data to a display for presentation to a user. The graphical data may be representative of one or more graphical user interfaces and/or any other graphical content as may serve a particular implementation.

The communication interface710can include hardware, software, or both. In any event, the communication interface710can provide one or more interfaces for communication (such as, for example, packet-based communication) between the computing device700and one or more other computing devices or networks. As an example, and not by way of limitation, the communication interface710may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI.

Additionally, the communication interface710may facilitate communications with various types of wired or wireless networks. The communication interface710may also facilitate communications using various communication protocols. The communication infrastructure712may also include hardware, software, or both that couples components of the computing device700to each other. For example, the communication interface710may use one or more networks and/or protocols to enable a plurality of computing devices connected by a particular infrastructure to communicate with each other to perform one or more aspects of the processes described herein. To illustrate, the digital content campaign management process can allow a plurality of devices (e.g., a client device and server devices) to exchange information using various communication networks and protocols for sharing information such as electronic messages, user interaction information, engagement metrics, or campaign management resources.