System and method for generating processed images using an embedded plug-in

DE112013004457B4Active Publication Date: 2025-08-21ADOBE INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
DE112013004457
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2012-09-13
Filing Date
2013-09-13
Publication Date
2025-08-21
Estimated Expiration
2033-09-13

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method comprising:loading, into a cross-platform image editor integrated with a software application and operating on a user computing device, a low-resolution version of a high-resolution image stored in an image library, the cross-platform image editor configured with image editing tools;displaying, with the user computing device, the low-resolution version of the high-resolution image;receiving, by the user computing device operating the software application and the integrated cross-platform image editor, a user selection of at least one of the respective image editing tools and at least one parameter associated with the at least one tool;Processing, with the user computing device, to modify the low-resolution version of the image by executing at least one instruction, respectively associated with each of the at least one selected image editing tool, using the at least one parameter; Displaying, with the user computing device, the low-resolution version of the image modified taking into account the user selection; Loading, without human user intervention in the cross-platform image editor running on the user computing device, the high-resolution image; Processing, with the user computing device, to modify the high-resolution image by executing at least one instruction, respectively associated with each of the at least one selected image editing tool, using the at least one parameter;andoutputting the modified high-resolution image with the user computing device;
Need to check novelty before this filing date? Find Prior Art

Description

Reference to Related ApplicationsThe present application is related to U.S. Provisional Patent Application Ser. No. 61 / 700,652, filed Sep. 13, 2012, which is hereby incorporated by reference in its entirety.Field of InterestThe present application relates generally to communication and, more particularly, to multimedia processing.BackgroundThe distribution of multimedia digital content, including images, on the Internet has strongly helped the desire to manipulate the content. One reason for this may be that it allows to express itself individually in connection with images. Unfortunately, the current state of what many users experience in image editing, particularly in connection with higher level editing, is unsatisfactory. One reason for this is the very high price threshold in connection with high-function image processing software applications. Another reason is the steep learning curve that users perceive in attempting to adapt a digital image. The most important reason, however, is the number of unrelated steps associated with adapting a digital image, which often implies downloading an image, adapting it on a software application, and then uploading it to its final destination. The result of these and other barriers is that users are frustrated and release.Many Internet web sites provide access to image content and allow users to upload self-produced (e.g., digital camera-recorded) images. Recently, the content of such web pages has also been available on mobile computing devices. Moreover, smartphones are configured with cameras that operate to capture images having a comparatively high resolution. The processing of such images is either not available, severely limited, or simply very frustrating.SummaryThe present application addresses these and other aspects and deficiencies associated with providing interactive systems and methods for multimedia content.According to one or more implementations, a system and method are disclosed that include cross-platform image editing that is integrated with a software application and that is configured with image editing tools. A low resolution version of a high resolution image stored in an image library is loaded into and displayed on a cross-platform image handler operating on a user computing device. A user selection of at least one of the respective image editing tools configured with the cross-platform image editing and at least one parameter associated with the at least one tool is received. Furthermore, the low resolution version of the image is processed for modification with the user computing device by executing at least one instruction associated with each of the at least one selected image editing tool using the at least one parameter. The low resolution version of the image with the change in consideration of the user selection is displayed. Moreover, the high resolution image is loaded without human user intervention in the cross-platform image editing that operates on the user computing device or in an image editing that operates on a second computing device. Further, the high resolution image is processed by the user computing device or the second computing device to change by executing at least one instruction each in association with each of the at least one selected image processing tool using the at least one parameter. Moreover, the changed high-resolution image is output with the user computing device or the second computing device.According to one or more implementations, the system and method further include identifying, without human user intervention and with the user computing device or the second computing device, at least one other high resolution image in the image library. Further, the system and method may include displaying, with the user computing device, a respective low resolution version of each of the at least one further high resolution image and displaying, with the user computing device, at least one prompt to change at least one of the respective low resolution version of each of the at least one further high resolution image using the at least one parameter. Further, the system and method may include processing with the user computing device or the second computing device and responsive to the at least one prompt to alter at least one of the at least one further high resolution image.In one or more implementations, a system and method for incorporating image processing functionality into a software application are provided. Image processing is provided that is configured to be integrated into each of a plurality of respective software applications operating in respective computing environments. A plurality of software development tools are provided, each of which adds, removes, and / or alters image processing functionality provided by the image processing when the image processing is integrated with at least one of the respective software applications. A request for image editing and a plurality of software development systems being processed is received, and the image editing and at least some of the software development tools are transmitted.Additional or further features and advantages of the present application will become apparent from the following description of the invention, which refers to the accompanying drawings.Brief Description of the DrawingsFIG. 1 illustrates an example hardware arrangement for viewing, reviewing, and outputting content, according to one implementation. FIG. 2 is a block diagram illustrating functional elements of a computing device according to an embodiment. FIGS. 3A through 3D show exemplary screen displays of an implementation of the present application. FIGS. 4A through 4G illustrate example screen displays provided on a mobile computing device and in accordance with an example implementation of the present application. FIGS. 5A through 5G illustrate example functionality associated with one or more implementations of the present application. FIGS. 6A through 6B show exemplary flowcharts related to embodiments related to the present application. FIGS. 7A through 7F are exemplary screen displays illustrating the installation of a software development package in an exemplary ANDROID environment, in accordance with an exemplary embodiment.Detailed DescriptionThe present application relates to image / image processing functionality made available within a wide variety of third party software applications and web pages. In one or more embodiments, users of such software and web pages may use the teachings disclosed herein for editing images, such as adding primitive filters to images, adding specific edges to images, overlaying "labels" (stickers), adding primitive fonts, or the like for customized image editing. In one or more implementations, functionality is provided to users for developing mobile applications and / or web pages that include or otherwise incorporate sophisticated functionality shown and described herein. Thus, in addition to providing a user interface for image editing, the present application provides a development platform for incorporating sophisticated image editing into a software application and / or web page. In contrast to known systems that provide image processing functionality in complicated, large "stand-alone" (stand-alone) applications, the present application enables seamless integration of a sophisticated image processing technology with virtually any existing software application. The image editing may be provided with one or more software development tools for adding, removing and / or adapting the functionality.In one or more embodiments, third party software applications operating online are supported in substantially real-time over a communication network. For example, the present application integrates image processing functionality, such as that shown and described in detail herein, directly into an application that can be operated on a mobile computing device or on an Internet web site (which can be configured for a mobile computing device platform). For example, image editing is provided that may include options for manipulating various image settings and may be incorporated into a virtually arbitrary software program application, including for mobile computing devices. In this way, the present application provides a ubiquitous technological solution that can be provided in remote software systems. Moreover, the image handler of the present application is configured to provide cross-platform functionality and provides handler options for desktop and mobile computing devices that employ a variety of operating systems.In one or more implementations, the application includes a software development kit (SDK) usable by software developers to integrate image processing functionality into various software systems. Software developers, including web developers, application developers of mobile device software, or the like, may download a respective SDK and integrate functionality, such as that shown and described herein, via an application programming interface (API) provided as a function of the SDK. Additional features may also be provided to enable software developers to adjust the appearance and functions of the various features listed herein. In this way, the present application provides seamless integration of functionality associated with image processing technology with functionality residing in software developer host environments. Such integration provides a new, convenient, quick, and intuitive solution for adjusting multimedia content.Moreover, the image processing functionality may be provided without any necessary connection to one or more computers (e.g., server computers).In one embodiment, an API provided in accordance with the teachings disclosed herein may be utilized to enable users to enhance and / or weaken or remove styles (styles), such as textures, shadows, rounded corners, and gradients that may be preconfigured in the SDK. Other styles that may be desired by users may be added using different key / value pairs supported by the respective SDK. For example, options may be added for autocorrection of an image with one or more selective repair, selection from a plurality of effects and filters, selection of a plurality of virtual "labels" (stickers) that may be placed on the image, resized, and / or edited. As shown and described herein, other options include choices for turning an image, resizing an image, cropping an image, sharpening, adjusting brightness, contrast, saturation, white balance, removing red eyes, masking, removing a masking, removing red eyes, lightening, free drawing, and adding / editing text. The order of the one or more tools may also be adjusted. The SDK may further support various other adjustment settings, such as defining a maximum size of canvas for editing an image, defining a screen position for image editing, defining a maximum image size for editing, and defining which specific tool initially opens when the image editing is running. Moreover, the present application supports temporarily obscuring a web page (or other workspace) until the user completes an image editing process.As set forth herein, the image manipulation provided in accordance with the teachings disclosed herein may be integrated with an Internet web site and is preferably optimized for various and current versions of web browser software applications, such as CHROME, FIREFOX, SAFARI, and INTERNET EXPLORER, to name a few. Moreover, the present application supports mobile browsers and functionality on handheld devices with touch-sensitive screens, including tablet computing devices, smart phones, personal digital assistants, or the like. For manual use, one or more SDKs in the context of the present application may provide a user interface that is optimized for the respective size and layout of respective smaller displays and that includes "original" capability associated with the one or more mobile devices.In an exemplary implementation, the SDK allows users to develop one or more software applications (including mobile applications, desktop applications, or other software applications) and / or internet web sites where users can manipulate images without necessarily departing from the focus of the developed software application or sweeping it. This is provided via a processing interface that can appear and disappear dynamically, such as by pushing into and out of the field of view, as software application user interfaces with an image / images in the software application. Further, after a user completes one or more editing tasks, the user may return to the "original" workflow of the software application, and the (edited) image may be returned to the software application for further viewing, processing, and / or storage.In one embodiment, the sequence or history of actions taken by a user operating on an image may be created and / or stored according to one implementation of the present application. For example, keystrokes, mouse clicks, selections, and / or commands received from a user may be "recorded" or otherwise recorded and stored for future use. For example, a user utilizing one or more respective functional features may be charged for one or more fees at a time, or alternatively, one or more actions taken by a user during editing of a respective image may be automatically repeated based on the archived record. In this way, after a user makes potentially complicated manipulations on an image, the same manipulations can subsequently be applied to one or more other images. Additionally, the present application may include a server-side solution that is separate from a mobile computing device application and receives and re-performs the steps provided in the archived record on a version of the image that has been edited by the user. Furthermore, the archived recording version may have a substantially higher resolution (e.g., 10 million bytes greater) than the version of the image that has been edited by the user. This is a useful feature for lower resolution images that are processed comparatively quickly by a user in an online or mobile computing device environment, where the respective processing steps are re-performed on a substantially higher resolution and larger version of the image that otherwise would not be suitable for online or mobile device processing (e.g., due to its sharp size).In an alternative embodiment (or in addition thereto), the present application supports processing of high resolution images directly on a mobile device. For example, a user interacts with a low resolution version (e.g., thumbnail) of an image, and the user's actions are re-performed on a high resolution version of the image that is also accessible (e.g., stored or loaded) on the mobile computing device. In this implementation, instead of forwarding the archived record to a remote computer, such as a third party server, a new processing thread may be initiated on the mobile computing device and the high resolution image modified thereon. This allows the quick and convenient making of complicated changes to an image on a mobile computing device, since the version of the image with which the user interacts is comparatively small. Editing operations performed by the user on the image appear to the user instantaneously and without processing delays, which are often experienced in connection with large images. By resort to the archived record, the high resolution version of the image is changed without disrupting the user's perceived workflow.Thus, in one or more implementations, a user-side edited version of an image (e.g., a comparatively low resolution version of the image) may be displayed on a mobile device software application, and user-side edit actions are received and recorded, where the actions may be repeated for the higher resolution version. This feature saves computing resources and time in transferring very large files back and forth between different servers and / or devices. Moreover, this feature is useful in high resolution images that can be stored off the mobile device (e.g., taken with a digital SLR camera and stored at a third party such as a PATCHR, FACEBOOK, INSTAGRAM, TWITTER, TUMBLR, DROPBOX, PHOTO-BUCKET, SHUTTER FLY, or SNAPFISH) and / or that are prepared for external purposes off the mobile device (e.g., for printing). Moreover, the functionality for publishing an image edited according to the present application may be provided to one or more social network web pages as listed above. For example, options may be provided to share (share) images across one or more web pages of a social network using a graphical screen control or menu selection (one click).Additionally, the present application provides various winning sharing options including sharing with developers and distributors selling image editing options, upgrades, and / or features as in-application purposes (in-application purposes). Options for purchasing image filter packs, labels (stickers), fonts, or other optional processing features can also be provided to end users, and for utilizing the options as part of the image processing procedure within a software application of a respective developer. The winning from such sales may be shared between a plurality of parties according to negotiated agreements. For example, the providers of features, application developers, web site hosts, advertisers, or the like may share the winning from selling options, updates, and / or features.In one or more implementations, creative content (e.g., filter packs, labels (stickers), fonts, or the like) may be dynamically deployed such that providers of such content may release the content without requiring update of an application. The content "store", such as a store for labels (stickers), a store for fonts, a store for colors, or the like, may be made available, for example, via a respective SDK. Credural content can be provided at various prices, such as premium content, which can greatly improve a user's photo-processing options by purchasing a wide variety of high quality labels (stickers), effects, frames, or the like. Furthermore, the present application supports advertising campans in which content is presented free of charge to end users and for which to be paid as a function of one or more branded indicators provided with the content.In one or more implementations of the present application, various pricing and / or staggering structures associated with images of varying resolutions may be provided. For example, images having a resolution within a certain range (e.g., up to 800 pixels by 800 pixels) very suitable for web pages can be provided free of cost or at low cost, while images having higher resolutions can be provided fee-wise. In one or more implementations, the fees associated with editing large images may be passed to the host or application distributor. In such cases, "premium image editing" can be distributed which has very few restrictions on the size of the edited image, but which has a price when it is captured in an application and which costs the user usage fees. Such manipulations may be provided for use in an "offline" context, such as an Internet web browser that is offline to allow a high resolution file to be manipulated. High resolution files, such as those occurring in an image captured with a high resolution camera, typically impact output performance and may not be suitable for online processing.In the figures of the drawing, like reference numerals designate like elements. Referring now to FIG. 1, a diagram of an exemplary hardware arrangement operating to provide the systems and methods disclosed herein is shown, generally referred to as system 100. The system 100 is preferably comprised of one or more information processors 102 coupled to one or more user computing devices 104 in a communication network 106. The user computing devices may include, for example, mobile computing devices, such as tablet computing devices, smart phones, personal digital assistants, or the like. Further, printed output is provided, for example, via output printers 110.The information processor 102 preferably includes all the necessary databases for the present invention, including image files, metadata, and other information related to artweed, artists, and galeries. However, it is contemplated that the information processor 102 may access any required databases via the communication network 106 or any other communication network to which the information processor 102 has access. The information processor 102 may communicate with devices comprising databases using any known communication method, including direct serial, parallel, USB interface, or via a local or wide area network.The user computing devices 104 communicate with the information processors 102 using data links 108, each coupled to the communication network 106. The communication network 106 may be any communication network, but is typically the Internet or any other global computer network. The data links 108 may be any known arrangement for accessing a communication network 106, such as a dial-up serial line interface protocol (SLIPP / PPP), an integrated services digital network (ISDN), a dedicated broadband leasing-based access (cable), frame relay, digital subscriber line (DSL), asynchronous transfer mode (ATM), or other access techniques.The user computing devices 104 preferably have the capability to send and receive data over the communication network 106 and are equipped with web browsers to display the received data on the display devices integrated therein. For example, the user computing device 104 may be personal computers, such as Intel Pentium class computers, but is not limited to such computers. Other workstations capable of communicating over a global computer network, such as smart phones, tablet computers, personal digital assistants (PDAs), and mass marketed Internet access services such as Web TV, may also be used. In addition, the hardware arrangement of the present invention is not limited to devices that are physically wired to the communication network 106. It will be appreciated by those skilled in the art that wireless devices may communicate with the information processors 102 using wireless data communication devices (e.g., WIFI).According to an embodiment of the present application, the user computing device 104 provides user access to the information processor 102 for purposes of receiving and providing art-related information. The specific functionality provided by the system 100, and in particular the information processors 102, will be described in detail below.The system 100 preferably includes software that provides functionality described in detail below and is preferably resident on one or more information processors 102 and / or on one or more user computing devices 104. The functions perceived by the information processor 102 are those of the operation of a web server and / or a web page host. The information processors 102 typically communicate with the communication network 106 via a permanent, i.e. non-switched, data connection 108. The permanent connection ensures that access to the information processors 102 is always available.As shown in FIG. 2, the functional elements of each information processor 102 and workstation 104 preferably include one or more central processing units (CPUs) 202 used to execute software code to control the operation of the information processor 102, a read only memory (ROM) 204, a random access memory (RAM) 206, one or more network interfaces 208 for transmitting data to and receiving data from other computing devices in a communication network, storage devices 210 such as a hard disk drive, a floppy disk drive, a tape drive, a CD-ROM, or a DVD driver for storing program code, databases, and application code, one or more input devices 212 such as a keyboard, a mouse, a track ball and the like, and a display 214.The various components of the information processor 102 need not be physically contained in the same unit or even located in a single location. As discussed above with reference to the databases that may reside on the storage device 210, the storage device 210 may be located at a location remote from the remaining elements of the information processors 102, and may even be connected to the CPU 202 via the communication network 106 via the network interface 208.The functional elements shown in FIG. 2 (labeled with reference numerals 202-214) are preferably the same categories of functional elements that are preferably present in the user computing device 104. However, not all elements, such as storage elements in the case of PDAs, need to be present, and the capacities of the various elements are arranged to match the expected user demand. For example, the CPU 202 in the user computing device 104 may have a smaller capacity than the CPU 202 included in the information processor 102. Similarly, the information processor 102 is likely to include storage devices 210 having a much larger capacity than the storage devices 210 present in the workstation 104. It will be understood by those skilled in the art that the capacities of the functional elements can be adjusted as needed.The essence of the present application is such that one skilled in the art of writing computer-executed code (software) can implement the described functions using one or more or a combination of popular computer programmer languages, including, but not limited to, C++, VISUAL BASIC, JAVA, ACTIVEX, HTML 5, XML, ASP, SOAP, OBJECTIVE C, C#, as well as various web application development environments.As used herein, references to displaying data on the user computing device 104 of the processor refer to communicating data to the workstation over the communication network 106 and processing the data such that the data can be viewed on the display 214 owned by the user computing device 104 using a web browser or the like. The display screens on the user computing device 104 present zones within the control assignment system 100 such that a user can proceed from zone to zone within the control assignment system 100 by selecting a desired link (link). Thus, the perception of the control assignment system 100 by each user is based on the magnitude that he / she proceeds through the display screens. In other words, because the system is not fully hierarchical in its display screen arrangement, users can proceed from zone to zone through a series of display screens without requiring "backtracking" (walking back). For this reason, unless otherwise indicated, the following discussion is not intended to represent any sequential operations, but rather the discussion of the components of the control allocation system 100.Although the present application is described herein by way of example with terms of a web-based system utilizing web browsers and a web page server (information processor 102), as well as mobile computing devices 104, the system 100 is not limited to this particular configuration. It is contemplated that the control allocation system 100 may be arranged such that the user computing device 104 may communicate with and receive display data from the information processor 102 using a known communication and display method, for example, using a non-Internet browser such as WINDOWS VIEWER coupled with a local area network protocol (IPX), such as INTERNETWORK PACKET EXCHANGE (IPX). It is further intended that any suitable operating system may be utilized on the user computing device 104, such as WINDOWS 3.X, WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS CE, WINDOWS NT, WINDOWS XT, WINDOWS VISTA, WINDOWS 2000, WINDOWS XP, WINDOWS 7, WINDOWS 8, MAC OS LINUX, IOS, ANDROID, WINDOWS PHONE 7, WINDOWS PHONE 8, and any suitable PDA or palm computer operating system.In one or more implementations, an image available for editing is downloaded from the information processor 102 from the user computing device 104. Alternatively, an image is downloaded from a remote device, such as a web server or other computing device, that is accessible via a communication network such as the Internet. Upon receipt, editing options are provided within the edit.Once the image is ready for processing, a server-to-server transmission (e.g., HTTP POST) may be supported for storing information about the processed image. A publicly accessible (and not password protected) web service may be configured for listening. A graphical screen control, such as a "save" button, may be provided in the user interface. After a user selects the button, the image data may be passed to the information processor 102 along with the configuration parameters. Subsequently, a temporary image is created on the information processor 102 from the image data, and a public link (link) with the temporary image may be transmitted to the workstation 104 for storage. The image may be stored in the local file system of the workstation 104, or may be stored in a location remote from the workstation 104. In the latter case, the edited image may be stored in a location where the user provides authentication, such as during an active secure session (e.g., in a FACEBOOK album). In one or more implementations, the SDK provides functionality that allows a user to abort a storage process.In conjunction with image edge cropping, options for particular formats, such as 4×3, 16×9, 60×50, or the like, may be provided. In one embodiment, a list of preset image edge cropping sizes or chopping sizes, or ratios thereof, separated by commata (or the like) is provided to the image edge cropping tool. The list may include, for example, a two-dimensional array (with labels), a one-dimensional array (without label), or a string (without label) separated by commas. In one embodiment, any sizes not supported by a particular display are excluded in the user interface.Various other image processing functionalities may be defined via the SDK as shown and described herein.FIGS. 3A through 3D show exemplary screen displays of an implementation of the present application. In the examples shown in FIGS. 3A through 3D, a developer's "original" software application 302 runs on the user computing device 104. The application 302 may be any software application configured to interface with an API provided as a function of a respective SDK, and may include functionality for image manipulation in accordance with the disclosed teachings. An image 304A is viewed on the device 104 and may be obtained from a storage location accessible by the device 104. For example, the image 304A may originate from a local file system dedicated to the device 104, from an Internet web site to which the device 104 is connected, or from any other location accessible to the device 104. Also included in FIG. 3A is a "This Photo Edit" button 306 that, when selected, causes the image edit according to the present application to appear on the image 304A for edit operations.FIG. 3B shows an example screen display after a user selects button 306. Once the selection is made, the image edit 308 with the image 304B preloaded therein appears for edit operations. Image 304B is a version of image 304A. In the example shown in FIG. 3B, the image editing 308 appears by moving up and overlays the software application 302. After a user operates on the image 304B as described below, the user may select a save key 310 or a cancel key 312 to save or discard the changes made to the image 304B.FIG. 3C shows image processing 308 operating on device 104. As shown in FIG. 3C, the option field 314 includes selectable icons for enhancing the image 304B. In one embodiment, the options field 314 includes many selectable options for image manipulation that can be made visible and selectable by drawing additional options into the field of view. In the example shown in FIG. 3C, image 304B is processed such that the person represented in the image has been modified by shading. After the user completes selecting edit options, the user selects the save button 310. The image 304B is stored, the image editing 308 disappears, and the original software application 302 appears with the image 304B (FIG. 3D ) displayed therein. In the event the user wishes to process the image further, the user selects button 306, thereby triggering instructions to re-appear for image processing 308.FIGS. 4A through 4G illustrate example screen displays provided on the mobile user computing device 104 according to an example implementation of the present application. As shown in FIG. 4A, the image 304B is loaded into the image handler 308, and the option field 314 is provided for applying the functionality provided by the respective SDKs. As shown in FIGS. 4A through 4G, the selectable options (e.g., icons) provided in the options field 314 may change according to a particular context. In the example shown in FIG. 4A, icons are provided in the options field 314 for enhancing the image 304B, adding effects, adding labels (stickers), and changing the orientation of the image 304B. In the example shown in FIG. 4A, the user has moved the selection pointer 316 (mouse) via the Post Icon in the options field 314. Also shown in FIG. 4A is the Completion Field 318, which includes options for completing a particular operation, such as storing or aborting a machining process. In the example shown in FIG. 4A, options are provided that include a store button 310 as well as an option to close the image edit 308 and return to the software application 302 (FIG. 3A ).FIG. 4B shows the image 304B being re-enhanced by a user after selection of self-enhancement functionality in the options field 314 (FIG. 4A ). By selecting the self-leveling function, the image 304B is changed, such as by increasing brightness and contrast, saturation, and / or sharpness levels. In the example shown in FIG. 4B, the options field 314 includes further enhancement options, which include options for causing the image 304B to appear as if it were captured at night, as well as for increasing the background illumination of the image 304B that occurs and for adjusting the color balance settings. Once the user has finished the re-improvement options, the user may select a control from the Complete field 318, including a "cancel" option 320 to cancel the re-improvement options or an "apply" option 322 to apply the re-improvement options. Although the example shown in FIG. 4B includes the "abort" option 320, one or more respective mobile computing devices may provide an abort feature included in an original interface. In such cases, the "abort" option 320 may be omitted depending on the particular implementation.It should be appreciated that the options provided in the options field 314 may be implemented as a function of one selection (e.g., a single click) or multiple selections, and complicated editing functionality may be provided in various ways. In one or more implementations, the present application provides an improvement over complicated image manipulations, such as PHOTOSHOP, that requires a thorough understanding of the complicated user interface, as well as suitable use of controls beyond the scope of knowledge of an average user who wants to improve the appearance of an image. By selecting a single control, such as for contrast, the present application adjusts one or more features associated with an image to achieve a balanced and visual result.FIG. 4C shows the image 304B enhanced by the user after selecting the "rotate / tilt" functionality in the options field 314. In the example shown in FIG. 4C, the options field 314 includes controls to change the orientation of the image 408B, including to rotate and flip the image 304B. The image 304B appears "tilted" in FIG. 4D.FIG. 4D shows the image 304B being re-enhanced by the user after selecting the saturation functionality in the options field 314 (and the flipping functionality in FIG. 4C ). In the example shown in FIG. 4D, the options field 314 includes a rotary slide control that, when selected by the user, causes instructions to be executed to change the adjustment of the color saturation levels. The location of the pointer 316 on the slider control represents the amount of saturation that the user selects. Once the user completes the saturation option, the user may select control from the Complete field 318, including a "cancel" option 320 for cancelling the repair options or an "apply" option 322 for applying the saturation option.FIG. 4E shows example options for labels (stickers) for use in the image 304B available in the options field 314. In the example shown in FIG. 4E, the options field 314 includes a number of hats, including a sombrero and a hat, where upon selection by the user, instructions are caused to execute that insert the hat into the image 304. The location of the selection pointer 316 on the selectable controls represents the particular hat the user selects. Once selected, the user may resize, rotate, and / or drag the hat to any location within the image 304B. Once the user completes the label options, the user may select control from the Complete field 318, including the "cancel" option 320 to cancel the repair options or the "apply" option 322 to apply the label option. The selected hat, as well as its size and rotation, is illustrated in FIG. 4F.FIG. 4F shows additional controls provided in the options field 314, including controls for sharpness, drawing, and text and memene generation. Figure 4G shows options for adding color in text. Other options may include adding indigo, concorde, aqua, or other effects to image 304B (not shown).FIGS. 5A through 5G show exemplary display screens associated with implementations of the present application that demonstrate effects for some controls stored in the options field 314. The display screens shown in FIGS. 5A-5G show image editing options associated therewith corresponding to image editing usable on, for example, a user computing device 104, such as a computing device operating on a web browser software application.As shown in FIG. 5A, options including re-improving, effects, frames, labels (stickers), orientation, image edge cropping, resizing, focusing, heat (e.g., for color temperature), brightness, contrast, saturation, sharpness, splash, drawing, adding text, removing red eyes, lightening, and masking are provided in the options field 314. Moreover, additional effect options may be provided, for example, by selecting effect navigation arrows 314. In the example image 304B shown in FIG. 5, the sunglasses from the sticker option controller have been added.xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxxFIG. 5B shows an example display screen associated with selecting sharpness control from the options field 314. Sharpness control may be configured with choices for use in various ways, such as provided via shape controls 502. In the example shown in FIG. 5B, the shape controls include a round option and a square option that allow selective sharpening corresponding to the selected shape control 502. The rectangular shape option 502 has been selected on the exemplary screen display of FIG. 5B, resized, and movable according to a user preference. In the example shown in FIG. 5B, a rectangular shape option 502 has been positioned diagonally above the image for selective sharpening within the rectangle, and the portion of the image outside the rectangle appears blurred.FIG. 5C shows an example display screen associated with selecting thermal control from the options field 314. The thermal controller may be configured for actuation with a slider mechanism 504 that is selectable and usable to cause instructions to be executed to increase or decrease the heat of an image, as is known in the art. For example, selecting the thermal slide mechanism 504 will cause the image to become blurred or more red, depending on the direction in which the slide 504 is moving.FIG. 5D shows an example display screen associated with selection of the splash control from the options field 314. In one or more implementations, the splash control allows a color or other image feature to be provided in a curative manner. For example, a color image may be converted to black and white and the splash controller selectively re-introduces color into the image. The splash controller may be configured with options for actuation in various ways, such as provided via controllers 506-512. In the example shown in FIG. 5D, smart control (intelligent control) 506 provides selective introduction of an effect, such as color, in consideration of a particular context. For example, in the example shown in FIG. 5D, use of the intelligence controller 506 over the slice structure near the center of the photograph may introduce color only for the slice without providing color to the surrounding zones (e.g., the sky or water). A free controller 508 can be similarly used to introduce an effect, such as color, but without intelligent consideration of the intelligent controller 506. For example, use of the free controller 508 over the slice may provide an overflow color (spill over color) for the water and sky in addition to the slice. The eraser controller 510 allows the user to remove the effect, such as the color, that has been introduced (or reintroduced) into the image. In addition, intelligent controller 506, free controller 508, and eraser controller 510 are resized, such as via brush size control options 512.FIG. 5E shows an example display screen associated with selecting the overlay control from the options field 314. The overlay controller may be configured with choices for different sizes 514 that, when selected, provide selective blurring or overlay of an image. In the example shown in Figure 5E, the right portion of the image appears blurred by the cover control.FIG. 5F shows an exemplary display screen associated with selection of a zoom controller 516 to selectively zoom in or out of an image. Zoom functionality allows for example greater accuracy in editing or otherwise changing smaller portions of an image as well as visualizing the degree of effect applied to an image by a user.FIG. 5G shows an example display screen 518 configured to process one or more images with functionality corresponding to the editing applied to one or more other images. According to one or more implementations, after an image is processed according to the teachings disclosed herein, the present application supports identifying, without human user intervention, at least one other image that may be stored in an image library, for example, and is suitable for similar or identical processing. Alternatively (or in addition), all images in a respective image library may be identified and shown. As shown on the display screen 518, an image 519 representing an image previously edited by the user is displayed. The respective editing processes that have been applied to the image are further displayed and include the image being sharpened and saturated and text being added. Images 520A and 520B were substantially automatically selected for processing with one or more of the processing processes applied to image 519. The selection of the images 520A and 520B may be as a function of GPS information associated with the images 519- 520B, a date and / or time stamp of the images, and / or a comparison of the images. For example, a respective portion of each of the images may be analyzed and compared (including at a relative pixel level) to determine whether two or more images are sufficiently similar to enable one or more processing processes to be applied thereto. Moreover, in one or more implementations, processing processes used with a low resolution version of an image may also be used with a high resolution version of the image. High resolution images may then be identified, such as according to the previously identified variables, and low resolution versions of the images may be displayed on display screen 518 for processing.Shown in FIG. 5G are selectable prompts 522A and 522B that are provided for a user to identify which of the images is to be edited with one or more of the editing processes applied to the image 519. Selectable editing options 524A, 524B, and 524C are also provided to allow a user to identify which of the editing steps previously applied to image 519 the user wishes to apply to image 520A and / or 520B. The selectable prompts 522A and 522B may be configured to be pre-selected or not pre-selected, and therefore processing for configuring one or more of the prompts 522A and 522B to transition between "selected" and "unselected" as a function of one or more editing options 524A, 524B, and 524C that the user selects. For example, the image 520A may be changed by the computing device 104 to be sufficiently saturated, and user selection of a manipulation option 524B (corresponding to saturation) may result in cancellation of selection of the selectable prompt 522A, thereby prompting the user not to continue further saturation of the image 520A. If the user is satisfied with the combined choices of images and the processes applied thereto, the user selects the process controller 526 and the associated editing functions are applied to one or more of the respective high resolution and low resolution versions of the respective images. Thus, as shown and described with reference to FIG. 5G above, the present application is useful for performing complicated editing steps on a plurality of images automatically and / or manually selected from an image library.Thus, as shown in FIGS. 3A-3D, 4A-4G, and 5A-5G, the present application improves functionality associated with virtually any existing software application by allowing users to edit images within the software application, without the need for a user to tune to another application, leave an application, and / or launch another application. Moreover, the images show a rational, convenient, and sophisticated workflow associated with an implementation. Moreover, image editing in accordance with the present application is embeddable and can be added to any web page or to mobile applications with only a few additional lines of code as a function of an API. The machining is easy to integrate and involves many complex tools that can be implemented by a single "click". A filter (known in the art) is provided that provides automatic repair of an image, such as for correcting one or more of brightness, contrast, saturation, sharpness, exposure, image edge cropping, straightening, orientation, and the like, according to preset or customized preferences.Furthermore, in one embodiment, a fast start option may be provided to allow a user to access one or more features independently and without the need to undergo full screen editing. In this way, a user can view an image and adjust a setting such as contrast independently. Thus, the image processing tools provided in accordance with the present application are functional and yet simple to use, which attenuates or even eliminates entirely the learning curve that a beginner often perceives in image processing software applications.In one implementation of the present application, a "key" (key) may be used to gain access to the SDK and one or more application programming interfaces in connection therewith for use with the teachings disclosed herein. The key may be generated whenever a developer generates an API for use in one or more software applications. One or more keys may be used, such as an application programming interface related key, to assist in adapting one or more graphics objects or widgets related to programming code generation. In one embodiment, respective SDKs are provided for different platforms, such as mobile device platforms (e.g., for iOS, ANDROID, and WINDOWS PHONE). A respective key may be provided for each of a plurality of web page endomains, or alternatively, a single key may support a plurality of web page endomains, depending on a particular implementation of the present application.The present application supports a plurality of languages and may include translations for image processing into Katalanian, Chinese (simplified / traditional), Dutch, French, Deutsche, Indonesian, Italian, Japanese, Korean, Lettian, Litauian, Polnic, Portugiesian (Portugal, Brasilien), Russian, Spanish, Turkian, Thai, Arabian, Bahasa Indonesia, and Ins Vietnamesian.According to one implementation, a "JS" (Java Script JS) file is obtained (e.g., downloaded) and loaded with a configuration object to configure a graphics object instance (widget instance). Once configured, a document object model ("DOM") is provided and a graphics object instance can be launched.An API according to an implementation of the present application is similar to the known JQUERY plug-in pattern in which a configuration object is passed that includes key / value pairs. A variety of configuration parameters may be supported. In one implementation, an image to be edited is located in a publicly accessible folder, such as the Internet. As noted above, an API key may be required, such as to store an image following a editing process. An API key generated to implement the teachings disclosed herein may use a root domain name regardless of the use of the API key on subdomains.To provide additional image manipulation adjustment to improve user perception, the present application generally supports the common cascaded style sheets (style sheets) that may be provided in a standard configuration. For developers who wish to achieve a far-reaching adaptation, a parameter can be provided in the SDK that causes a blank canvas (blank canvas). Alternatively, a style guide widget (style guide widget) object may be provided for one or more customized appearances, such as surface textures, background images, header (header) and foot (foot) area content, buttons, icons, input fields, labels, or the like.Other customization options include background color, foreground color, accent color / accent colors, colors of one or more bars (e.g., title bar, bar on the left, or the like), button icon colors, text formats, and animation options.As discussed above, a plurality of respective SDKs may be provided in connection with one or more operating systems and / or one or more platforms. Depending on the particular environment, a respective compiler, such as LLVM from APPLE (included in XCODE) and the ANDROID compiler (e.g., via ECLIPSE), may be required to implement the teachings disclosed herein corresponding to the SDK. A discussion regarding three exemplary mobile computing device operating systems follows.In one embodiment and in the context of an existing application running under iOS, files associated with the SDK are copied into a project and libraries and frameworks are linked thereto. Resources are copied in the setup phase, link flags (linker flags) are added, and headers (headers) are imported. By displaying an instance of one or more class files (or subclass files), the SDK may be utilized, control may be displayed, and one or more methods may be implemented and utilized. One or more session objects may be created when initiating the editing and may remain open until a user selects a control, such as a button (e.g., "abort" or "finish") to complete the editing process. As stated above, in one embodiment, a session may be played back on an input image as a function of a session object used to create an instance of one or more class files. For example, a context may be created to render a session to an input image such that there is a correspondence to one or more parameter settings (such as the size of the image and / or the aspect ratio of the input image). In one embodiment, a "completion block" is provided by a developer as a parameter for a process class. After a user completes an image editing session, the modified image is passed to the completion block.FIG. 6A is a flow chart illustrating example steps S 100 associated with an embodiment of the present application. At step S 102, a software application, such as one running on a mobile computing device, runs with an image loaded therein. The software application receives a command from a user to edit the image, thereby causing the image editing to start as a plug-in for the software application (step S 104). The image editing appears by sliding into the field of view and a version of the pre-loaded image and software application are loaded (step S106). A number of tool options are provided for editing the image (step S 108). All options for acting on brightness, contrast, saturation, sharpness, adding labels (stickers), memen, text and drawing freely on the image are provided, for example. At step S 110, selections for one or more tools in the edit are received and the image is edited using the selected tool / tools.As further shown in FIG. 6A, selection is received at step S112 and a determination is made as to whether the user has selected graphical screen control for storing or aborting the editing steps taken up to that point. If the determination at step S112 is that the user has selected control for storing the editing steps, the version of the image in the image editing is stored (step S114). Subsequently, the version of the image is uploaded to the information processor 102 (step S116). In alternative embodiments, the version of the image may be stored as a local file system. The version of the image is transmitted to the software application (step S118). Next, at step 120, the edit moves out of field of view and the original software application reappears. In an alternative, if the determination at step S112 is that the user has selected control to abort editing steps up to this point, the version of the image is not stored (the changes are effectively discarded) and the editing moves out of the field of view (step S120). Then, the process returns to step S102 where the software application runs on the image that can be processed as shown at steps S104 through S118, or it does not do so if changes have been discarded, see step S122.FIG. 6B is a flow chart illustrating example steps S 200 associated with an embodiment of the present application. At step S 202, a respective SDK is downloaded and installed to implement functionality as shown and described. For example, a developer of a software application operating on the ANDROID operating system selects the SDK to develop an image processing plugin for the ANDROID-based application. Once installed, one or more key / value pairs are defined to provide respective functionality in image editing (step S 204). Choices are made, for example, among various control operations shown and described herein, including, for example, filters, edges, text content, labels, or the like (step S 206). Subsequently, a determination is made as to whether another key / value pair is defined (step S 208). If so, the process returns to step S204. If not, the process proceeds to step S 210 and additional options are provided, such as defining a screen and / or canvas size. Other options include defining colors and styles for editing (step S212). In addition, language preferences for the defined editing (step S214) and options for recording a history of the user actions for future reproduction (step S216) are defined. In addition, options for providing high resolution may be optionally provided (step S218). The process then ends at step 220.FIGS. 7A-7F are exemplary screen displays illustrating installing the SDK in an exemplary ANDROID environment. In the exemplary display screens shown in FIGS. 7A-7F, the integrated ECLIPSE development environment is shown with the ANDROID development tool plugugin installed therein. As shown in FIGS. 7A and 7B, an import dialog display screen 704 appears upon selection of an import menu selection (display screen 702). From the import options list 706, the "Exist Projects in Workspace" option is selected and the user selects the graphical controller labeled "Continue" 708. Next, as shown in FIG. 7C, the dialog display screen 710 is provided and an option 712 is provided to a user to select an archive file. An archive file (e.g., a ZIP file) is selected and a new ANDROID library project is listed for creation in the current workspace. The ANDROID library is provided, according to one embodiment, for use of the present application in an ANDROID computing environment including editing or otherwise manipulating images. If the user is satisfied with the respective project, the user selects the finishing control 714.As further shown in Figs. 7A to 7F, an ANDROID application is created to take advantage of image processing. A display screen 716 is displayed with options 718 to allow a user to select a respective SDK project. In the example shown in FIG. 7D, an ANDROID-4.0 setup target is selected by selecting a respective SDK (FIG. 7D ), and the library project file is selected on the display screen 720 (FIG. 7E ). The user then navigates to the Java Build Path section of the project properties dialog and selects the Add JARs (Add JARs) button of the "Library" subsection on the display screen 722 (FIG. 7F). A new project is created, which preferably contains predefined references and is available to the users for developer use.In one embodiment, permissions are defined, such as for the Internet and write access to external memory. To issue these permissions, entries within the AndroidManifest.xml<manifet> are added. Further permissions may be set, such as by advantageously utilizing functionality of the original operating system (e.g., vibration feedback).As shown and described herein, the present application thereby supports the image / image editing functionality available within a wide variety of third-party software applications and web pages. In one or more implementations, image editing is provided that is configured as a plug-in for the software applications, includes options for manipulating image settings, and can be incorporated into any nearly any software program application, including mobile computing devices. In this way, the present application provides ubiquitous technology that can also be provided in remote software systems.Known markers may be used for the empty spaces disclosed herein to provide useful photo-edit experiences to users. From current filters over frames to photorealistic labels, the present application supports multi-faceted positive connections between advertisers and millions of mobile content creators throughout the country that can exceed conventional mobile advertising methods by lengths.Although the present invention has been described with reference to specific embodiments, many other modifications and changes, as well as other uses, will be apparent to those skilled in the art. For example, although a majority of the specification and examples of the present specification relate to still images, the application is not limited thereto. The SDK may also provide support for editing video, audio, or other content, which would otherwise require a stand-alone product. It is therefore preferred that the present invention not be limited to the specific disclosure provided herein.

Claims

A method comprising: in a cross-platform image editing integrated with a software application and operating on a user computing device, loading a low resolution version of a high resolution image stored in an image library, the cross-platform image editing configured with image editing tools; in the user computing device, displaying the low resolution version of the high resolution image; in the user computing device operating the software application and the integrated cross-platform image editing, receiving a user selection of at least one of the respective image editing tools and at least one parameter associated with the at least one tool; processing, with the user computing device, for changing the low resolution version of the image by executing at least one instruction respectively in connection with each of the at least one selected image processing tool using the at least one parameter; displaying, with the user computing device, the low resolution version of the image changed in consideration of the user selection; loading, with the high resolution image performed without intervention by a human user in the cross-platform image processing operated on the user computing device; processing, with the user computing device, for changing the high resolution image by executing at least one instruction respectively in connection with each of the at least one selected image processing tool using the at least one parameter; and outputting, with the user computing device, the changed high resolution image.The method of claim 1, further comprising: without human user intervention and identifying, with the user computing device, at least one other high resolution image in the image library; displaying, with the user computing device, a respective low resolution version of each of the at least one other high resolution image; displaying, with the user computing device, at least one prompt for changing at least one of the respective low resolution version of each of the at least one other high resolution image using the at least one parameter; with the user computing device, and processing, in response to a user response to the at least one prompt, to change at least one of the at least one other high resolution image.The method of claim 2, wherein the step of identifying the at least one further high resolution image is performed as a function of one or more of GPS information associated with the image, a date of the image, and a time of the image.The method of claim 2, wherein the step of identifying the at least one further high resolution image includes identifying at least a portion of the image and comparing the at least one portion with at least a portion of the at least one further high resolution image.The method of claim 4, wherein the portion of the image corresponds to the portion of the at least one further high resolution image.The method of claim 2, further comprising selecting, without user intervention, a respective low resolution version of each of the at least one further high resolution image.The method of claim 1, wherein the image editing tools include one or more of cropping, texture, rotation, labeling, sharpness, overlay, sharpening, red eye removal, text, brightness, contrast, framing, and saturation.The method of claim 1, wherein the cross-platform image editing is configured in at least two versions, a first version of the cross-platform image editing is configured with a first set of image editing tools and a second version of the cross-platform image editing is configured with a second set of image editing tools, the first set including more image editing tools than the second set.The method of claim 8, further comprising tracking the distribution of the respective versions of the cross-platform image editing.The method of claim 1, wherein the cross-platform image manipulation is operable within mobile computing platforms, internet web site platforms, and desktop computing platforms.The method of claim 1, wherein the cross-platform image editing is configurable via a software development package.The method of claim 1, wherein the cross-platform image editing is configured as a plug-in for the software application.A system comprising: cross-platform image editing integrated with a software application and operating on a user computing device, configured to load a low resolution version of a high resolution image stored in an image library, the cross-platform image editing configured with image editing tools; wherein the user computing device is configured to: display the low resolution version of the high resolution image; receive a user selection of at least one of the respective image editing tools and at least one parameter associated with the at least one tool; process to change the low resolution version of the image by executing at least one instruction associated with each of the at least one selected image editing tool using the at least one parameter; and displaying the low resolution version of the image changed in consideration of the user selection; wherein the user computing device is further configured to: load the high resolution image; process to change the high resolution image by executing at least one instruction associated with each of the at least one selected image editing tool using the at least one parameter; and output the changed high resolution image.The system of claim 13, wherein the user computing device is further configured to: identify, without human user intervention, at least one other high resolution image in the image library; further wherein the user computing device is further configured to: display a respective low resolution version of each of the at least one other high resolution image; display at least one prompt to change at least one of the respective low resolution version of each of the at least one other high resolution image using the at least one parameter; and further wherein the user computing device is further configured to: in response to a user response to the at least one prompt, process to change at least one of the at least one other high resolution image.The system of claim 14, wherein the step of identifying the at least one further high resolution image is performed as a function of one or more of GPS information associated with the image, a date of the image, and a time of the image.The system of claim 14, wherein the step of identifying the at least one further high resolution image includes identifying at least a portion of the image and comparing the at least one portion with at least a portion of the at least one further high resolution image.The system of claim 16, wherein the portion of the image corresponds to the portion of the at least one further high resolution image.The system of claim 14, wherein the user computing device is further configured to: without a user intervention, select a respective low resolution version of each of the at least one further high resolution image.The system of claim 13, wherein the image editing tools include one or more of cropping, texture, rotation, labeling, sharpness, overlay, sharpening, red eye removal, text, brightness, contrast, framing, and saturation.The system of claim 13, wherein the cross-platform image editing is configured in at least two versions, a first version of the cross-platform image editing is configured with a first set of image editing tools and a second version of the cross-platform image editing is configured with a second set of image editing tools, the first set including more image editing tools than the second set.The system of claim 20, further comprising tracking the distribution of the respective versions of the cross-platform image editing.The system of claim 13, wherein the cross-platform image manipulation is operable within mobile computing platforms, internet web site platforms, and desktop computing platforms.The system of claim 13, wherein the cross-platform image manipulation is configurable via a software development package.The system of claim 13, wherein the cross-platform image manipulation is configured as a plug-in for the software application.

Citation Information

Patent Citations

  • Paintbox-type graphics system trials at low resolution then converts to high resolution

    GB2235856A

  • An electronic image processing system

    GB2271035A