US20030065590A1 - System and method of changing attributes of an image-based product - Google Patents

System and method of changing attributes of an image-based product Download PDF

Info

Publication number
US20030065590A1
US20030065590A1 US10/287,303 US28730302A US2003065590A1 US 20030065590 A1 US20030065590 A1 US 20030065590A1 US 28730302 A US28730302 A US 28730302A US 2003065590 A1 US2003065590 A1 US 2003065590A1
Authority
US
United States
Prior art keywords
image
server
product
attribute
color
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US10/287,303
Other versions
US6941276B2 (en
Inventor
Paul Haeberli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shutterfly LLC
Original Assignee
Paul Haeberli
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=24236870&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US20030065590(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Paul Haeberli filed Critical Paul Haeberli
Priority to US10/287,303 priority Critical patent/US6941276B2/en
Publication of US20030065590A1 publication Critical patent/US20030065590A1/en
Application granted granted Critical
Publication of US6941276B2 publication Critical patent/US6941276B2/en
Assigned to JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT reassignment JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT SECURITY AGREEMENT Assignors: SHUTTERFLY, INC.
Assigned to JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT reassignment JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT SECURITY AGREEMENT Assignors: SHUTTERFLY, INC.
Assigned to JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT reassignment JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT SECURITY AGREEMENT Assignors: SHUTTERFLY, INC.
Assigned to SHUTTERFLY, INC. reassignment SHUTTERFLY, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Assigned to MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT reassignment MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SHUTTERFLY, INC.
Assigned to MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT reassignment MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LIFETOUCH INC., LIFETOUCH NATIONAL SCHOOL STUDIOS INC., SHUTTERFLY, INC.
Assigned to SHUTTERFLY, INC., LIFETOUCH NATIONAL SCHOOL STUDIOS INC., LIFETOUCH INC. reassignment SHUTTERFLY, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Assigned to WILMINGTON TRUST, NATIONAL ASSOCIATION reassignment WILMINGTON TRUST, NATIONAL ASSOCIATION FIRST LIEN SECURITY AGREEMENT Assignors: SHUTTERFLY, INC.
Assigned to SHUTTERFLY INC. reassignment SHUTTERFLY INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Assigned to SHUTTERFLY, LLC reassignment SHUTTERFLY, LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SHUTTERFLY, INC.
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0621Item configuration or customization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0641Shopping interfaces
    • G06Q30/0643Graphical representation of items or shoppers

Definitions

  • This disclosure relates to a method and system of changing attributes of an image-based product.
  • Images can be generated in several ways. For example, an image can be captured using a film-based or digital camera and/or created and edited using image processing software such as ADOBE PHOTOSHOP® or the GNU IMAGE MANIPULATION PROGRAM (“GIMP”). Images captured using a film-based camera typically are stored as film negatives. Images captured using a digital camera typically are stored as digital files residing in the memory of the digital camera and/or a storage medium to which the file has been transferred (for example, a hard drive or CDROM). Images created using image processing software are typically stored as a digital file residing on a computer readable medium such as a hard drive.
  • image processing software such as ADOBE PHOTOSHOP® or the GNU IMAGE MANIPULATION PROGRAM (“GIMP”).
  • Images captured using a film-based camera typically are stored as film negatives.
  • Images captured using a digital camera typically are stored as digital files residing in the memory of the digital camera and/or a storage medium to which the file has been transferred (for
  • An image-based product can be generated from such stored images.
  • image-based product refers to an item, regardless of medium, that includes a visual representation of at least a portion of one or more images.
  • image print also commonly referred to as a “photograph”.
  • a user can take a picture using a conventional film-based camera and then bring the exposed film to a photo-finishing laboratory to have the laboratory develop the exposed film and generate an image print.
  • an image-based product can include other components.
  • One conventional type of image-based product is created by mounting an image print in a frame.
  • a frame shop i.e., to a “brick-and-mortar” frame shop
  • Such a user typically can seek assistance in selecting such components from an employee of the frame shop (referred to here as a “frame shop assistant”).
  • the frame shop assistant can inspect the user's image print and select a mat and frame the assistant believes will look good with the image print.
  • the user can then physically place the image print in or near the selected mat and frame in order to get an idea of how the image print would look mounted with the selected mat and frame.
  • a user who has little training and experience in selecting an appropriate mat and frame can have a trained and experienced frame shop assistant select a mat and frame for the image print.
  • a customer When a customer wishes to have a high-quality image print generated from a digital image, the customer need not physically take the digital image to a photo-finishing laboratory and instead can electronically transmit the digital image to an “online” photo-finishing laboratory using a computer network such as the Internet.
  • a computer network such as the Internet.
  • the customer can use an Internet browser program (referred to herein as a “browser”) such as NETSCAPE NAVIGATOR®, which is commercially available from Netscape Communications Corporation of Mountain View, Calif., USA.
  • the customer can direct the browser to a web site associated with the online photo-finishing laboratory and upload the digital image to a server hosting the web site.
  • the online photo-finishing laboratory can then take the digital image from the web server and produce a high-quality image print from the digital image in a conventional manner.
  • the online photo-finishing laboratory then typically sends the high-quality image print to the customer using a delivery service such as the UNITED STATES POSTAL SERVICE or FEDERAL EXPRESS®.
  • Various implementations may include one or more of the following features.
  • a method can include automatically identifying an attribute of a first image.
  • the method also can include automatically selecting a new value for a product attribute of an image-based product based on the image attribute.
  • the image-based product can incorporate at least a portion of the first image.
  • the method can also include receiving an order for the image-based product. Also, a first preview image of the image-based product can be generated and displayed. Displaying the first preview image can include downloading the first preview image to a client computer, and displaying the first preview image on the client computer.
  • the method can also include receiving the first image.
  • Receiving the first image can include uploading the first image (e.g., from a client computer to a server using a computer network such as the Internet), and/or storing the first image (e.g., in an image database).
  • receiving the first preview image can include receiving a plurality of images. A selection of the first image from the plurality of images can be received (e.g., after the plurality of images have been displayed).
  • Automatically identifying the image attribute can include analyzing the first image, and the new value for the product attribute can be automatically selected based on the analysis of the first image.
  • Analyzing the first image can include generating a set of representative colors from the first image (e.g., by generating a color map for the first image, for example, by performing a median cut algorithm on the first image).
  • Automatically selecting the new value for the product attribute can include selecting a color as a function of at least one of the representative colors. A color that matches at least one of the representative colors (e.g., a color that complements at least one of the representative colors) can be selected.
  • a color can be selected from the set of representative colors, for example, by selecting the most popular color from the set of representative colors or selecting a color at random from the set of representative colors.
  • the product attribute can be a border color product attribute of the image-based product and the new value can be the selected color.
  • the method can further include generating a second preview image of the image-based product having a border.
  • the color of the border can be the color specified by the border color product attribute.
  • selecting a new value for the product attribute can include selecting the new value at random. Also, selecting a new value for the product attribute can include selecting the new value at psuedo-random. The selection of the new value can be constrained based on previous values of the product attribute. Also, selecting a new value for the product attribute can include selecting the new value from a predetermined ordering of values.
  • the product attribute can relate to which images are incorporated in the image-based product, and the image-based product can further incorporate at least a portion of a second image.
  • the method can further include receiving a plurality of images.
  • An image attribute of each of the received images can be automatically identified, and the first and second images can be automatically selected from the received images based on the image attributes of the received images.
  • the first and second images can be selected from a subset of the received images having similar image attributes.
  • the orientation of each of the received images can be determined, and the first and second images can be selected from a subset of the received images having a portrait orientation or from a subset of the received images having a landscape orientation.
  • the image-based product can be a diptych or a triptych.
  • the method can also include fulfilling the order for the image-based product.
  • the image-based product can be an image print or a framed image print, for example.
  • the method can also include storing state information about the first image.
  • the state information can be updated each time a new value for the product attribute is selected.
  • the state information can include information about a current state of the product attribute and/or information about a past state of the product attribute.
  • the information about the past state of the product attribute can include undo information for undoing the selection of the new value for the product attribute.
  • an undo command can be received, and the selection of the new value for the product attribute based on the undo information can be undone.
  • the information about the past state of the product attribute can include redo information for redoing the selection of the new value for the product attribute.
  • a redo command can be received, and the selection of the new value for the product attribute can be redone based on the redo information.
  • a server can include a web front end that connects the server to a computer network such as the Internet.
  • the server can also include a print lab that is in communication with the web front end.
  • the print lab can generate an image-based product incorporating a first image.
  • the server can include software tangibly stored on a computer-readable medium.
  • the software can include instructions operable to cause the server to receive a first image via the computer network, automatically identify an image attribute of the first image, and automatically select a new value for a product attribute of an image-based product. The new value can be selected based on the image attribute, and the image-based product can incorporate at least a portion of the first image.
  • the server can include an image database in communication with the web front end that stores the first image.
  • the software can also include instructions operable to cause the server to generate a first preview image of the image-based product, download the first preview image to a client computer, and display the first preview image on the client computer. Also, the software can include instructions operable to cause the server to receive the first image from a client computer connected to the server using the computer network such as the Internet.
  • the software can include instructions operable to cause the server to receive a plurality of images and a selection of the first image from the plurality of images.
  • the images and/or selection can be received from a client computer connected to the computer network.
  • the software can also include instructions operable to cause the server to analyze the first image.
  • the new value for the product attribute can be automatically selected based on the analysis of the first image.
  • the software also can include instructions operable to cause the server to generate a set of representative colors from the first image (e.g., by including instructions operable to cause the server to generate a color map for the first image, for example, by performing the median cut algorithm on the first image).
  • the software can include instructions operable to cause the server to select a color as a function of at least one of the representative colors.
  • such instructions can include instructions operable to cause the server to select a color that matches at least one of the representative colors, e.g., by including instruction operable to cause the server to select a color that complements at least one of the representative colors.
  • such instructions can include instructions operable to cause the server to select the color from the set of representative colors, for example, by including instructions operable to cause the server to select the most popular color or to select the color at random from the set of representative colors.
  • the product attribute can be a border color product attribute of the image-based product, and the new value can be the selected color.
  • the software can include instructions operable to cause the server to generate a second preview image of the image-based product having a border.
  • the color of the border can be the color specified by the border color product attribute.
  • the software further can include instructions operable to cause the server to select the new value at random, at psuedo-random, and/or from a predetermined ordering of values.
  • the selection of the new value can be constrained based on previous values of the product attribute.
  • the product attribute can relate to which images are incorporated in the image-based product, and the image-based product can incorporate at least a portion of a second image.
  • the software can further include instructions operable to cause the server to receive a plurality of images, automatically identify an image attribute of each of the received images, and automatically select the first and second images from the received images based on the image attributes of the received images.
  • the software can include instructions operable to cause the server to determine the orientation of each of the plurality of images.
  • the first and second images can be selected from the subset of images having a portrait orientation or from the subset of images having a landscape orientation.
  • the image-based product can be a diptych or a triptych.
  • the software can further include instructions operable to cause the server to receive an order for the image-based product and fulfill the order for the image-based product.
  • the image-based product can be, for example, an image print or a framed image print.
  • the software can include instructions operable to cause the server to store state information about the first image.
  • the software can include instructions operable to cause the server to update the state information each time a new value for the product attribute is selected.
  • the state information can include information about a current state of the product attribute and/or information about a past state of the product attribute.
  • the information about the past state of the product attribute can include undo information for undoing the selection of the new value for the product attribute.
  • the software can include instructions operable to cause the server to receive an undo command and undo the selection of the new value for the product attribute based on the undo information.
  • the information about the past state of the product attribute can include redo information for redoing the selection of the new value for the product attribute.
  • the software can include instructions operable to cause the server to receive a redo command and redo the selection of the new value for the product attribute based on the redo information.
  • a method can provide a user on a client computer an interface for changing one or more product attributes of an image-based product that incorporates at least a portion of a first image.
  • the client computer can be in communication with a server and can have a display and a pointing device operatively coupled to a cursor displayed on the display.
  • Such a method can include displaying a border width control that, when actuated, supplies a new border size value to the server so that the server can change a border product attribute of the image-based product to the new border size value.
  • the method can include displaying a preview image of the image-based product.
  • the border width control can be a button associated with a minimum border size and/or can be part of web page that is downloaded by a browser executing on the client computer.
  • the method can further include displaying a print size control that, when actuated, supplies a new print size value to the server so that the server can change a print size product attribute of the image-based product to the new print size value.
  • the print size control can be a selection box having a plurality of print size selections a user can select and/or can be part of web page that is downloaded by a browser executing on the client computer.
  • a method can provide a user on a client computer an interface for changing one or more product attributes of an image-based product that incorporates at least a portion of a first image.
  • the client computer can be in communication with a server and can have a display and a pointing device operatively coupled to a cursor displayed on the display.
  • Such a method can include displaying an image selection control that, when actuated, supplies an image selection to the server, the image selection identifying an image.
  • the method can include displaying a text entry control, e.g., a text entry field in which a user can enter text that, when actuated, supplies text to the server.
  • the method can further include displaying a text position selection control including a plurality of versions of the image, each version of the image including at a least a portion of the text located in a different text position on the image.
  • the text position selection control when actuated, can supply to the server a text position selection that corresponds to one of the text positions.
  • the image selection control can be part of web page that is downloaded by a browser executing on the client computer. Such a web page can also include a plurality of thumbnail images so that the user can actuate the image selection control by clicking on a thumbnail image.
  • the text entry control can be a text entry field in which a user can enter text and/or can be part of a web page that is downloaded by a browser executing on the client computer.
  • the text position selection control can be part of a web page that is downloaded by a browser executing on the client computer.
  • a user can actuate the text position selection control by clicking on one of the versions of the image.
  • a preview image of an image-based product allows a user to see how the image-based product will look with a particular set of product attributes. In this way, the user can determine if the user wishes to order such an image-based product and/or modify one or more of the attributes of that image-based product.
  • a preview image of an image print can be generated from an image selected by the user. The user can change one or more attributes of the image print, for example, the minimum border width, border style, border color, and print size.
  • Changing one or more attributes of an image-based product involves selecting which product attributes to change and then assigning a value to the selected attributes. Both of these operations can be performed manually by a user or automatically by a system. For example, a system can be configured to automatically select the one or more product attributes to change at random. In addition, or instead, the system can be configured to select one or more of the product attributes to change based on information relating to the user's images, past transactions, and account information. For example, the system can select one or more product attributes that the user's account information indicates the user has not tried changing (perhaps, because the user was unaware that the particular attribute could be changed).
  • the system can be configured to assign new values to the selected product attributes at random and/or based on information relating to the user's images, past transactions, and account information. In this way, the system can be configured to suggest new ways to incorporate a user's image in an image-based product.
  • a system can be configured so as to allow the user to select one or more attributes to change and then have the system automatically assign values to the selected product attributes.
  • the system can be configured to automatically assign the values to the selected product attributes as a function of a selected image.
  • the system automatically selects a border color for an image print based on the colors contained in an image.
  • the system can be configured to select multiple images to be included in an image-based product.
  • the product attribute assigned a new value is an attribute that indicates which images are to be included in the image-based product.
  • the system can be configured to allow the user to both select which product attributes to change and assign a new value to the selected product attributes.
  • the system can be configured to present the user with an interface for cropping a selected image. In such an interface, a crop mask is displayed over the selected image.
  • the system can generate the crop mask as GIF image in which the portion of the crop mask corresponding to a selected portion of the crop mask is transparent and the portion of the crop mask corresponding to a cropped portion of the image has a checkerboard pattern. By displaying the crop mask over the image, the selected portion of the image can be visually indicated.
  • the system When a user changes the current selected portion of the image (for example, by actuating a control displayed on the client computer), the system generates a new crop mask based on the changes made by the user and displays the new crop mask over the image in order to visually indicate the new selected portion of the image.
  • Such an implementation is well suited for use with a browser-based system such as the World Wide Web.
  • the image and the crop mask can be displayed in an HTML table cell embedded in a web page. Because the system need only generate and download to the browser a new crop mask each time a user makes a change (as opposed to generating and downloading an entire image file), the system can display the changes made by the user relatively quickly.
  • the user can change product attributes relating to the border size, border style, border color, and/or print size of an image print.
  • the user can specify the content and position of text to be incorporated in an image-based product.
  • a user interface control can be provided that the user can actuate in order to cause the system to automatically change one or more attributes of the image-based product.
  • the system can be configured to change the attributes of the image-based product in a different way each time the control is actuated. Also, the appearance of the control can be changed each time the control is actuated in order to indicate to the user that actuating the control another time will cause the system to make different changes to the image-based product.
  • state information can be automatically stored for each image, without requiring the user to issue an explicit “save” command.
  • the state information can include information about the current product attributes associated with each image.
  • the stored state information can be updated each time the user changes the product attributes associated with an image.
  • the stored state information can be retrieved and used as the current product attributes for the image.
  • a preview image based on the retrieved state information can be generated and displayed for the user, and the user can resume manipulating the product attributes associated with the image starting from the point where the user was when the user last accessed the image.
  • the stored state information can also include information about past states of the product attributes associated with the image.
  • the information about past states can include modification history that can be used to “undo” changes the user has previously made to the product attributes.
  • this modification history information can be used to allow the user to “redo” any changes that have been undone.
  • the user can make changes to product attributes associated with a first image. Then, the user can cease accessing that image and perform some other operation—for example, accessing and changing product attributes associated with a second image and/or disconnecting from the system.
  • the modification history information for that image can be retrieved and used to allow the user to undo or redo changes made while the user last accessed that image.
  • FIG. 1 is a block diagram of a system for generating image-based products from digital images.
  • FIG. 2 is a flow diagram of a process for offering image-based products for sale over a computer network.
  • FIG. 3 is a flow diagram of a process for displaying preview images of an image-based product.
  • FIG. 4 is a flow diagram of a process for automatically assigning a value to a product attribute.
  • FIG. 5 is a flow diagram of a process for automatically selecting a border color for an image print based on the colors contained in a selected image.
  • FIGS. 6 A- 6 B show a user interface that can be used to implement the process shown in FIG. 5.
  • FIG. 7 is a flow diagram of a process for automatically selecting multiple images to combine in an image-based product.
  • FIGS. 8 A- 8 B show a user interface that can be used to implement the process shown in FIG. 7.
  • FIGS. 9 A- 9 B show a user interface for allowing a user to specify the portion of a selected image that will be visible in an image-based product.
  • FIG. 10 is flow diagram of a process for allowing a user to crop a selected image.
  • FIG. 11 is a flow diagram of a process for specifying the border size, border style, border color, and/or print size of an image print.
  • FIGS. 12 A- 12 B show a user interface that can be used to implement the process shown in FIG. 11.
  • FIG. 13 is a flow diagram of a process for specifying the content and position of text to be incorporated in an image-based product.
  • FIG. 14 shows a display of four versions of an image.
  • FIGS. 15 A- 15 B show a user interface that can be used to implement the process shown in FIG. 13.
  • FIG. 16 is a flow diagram of a process for automatically changing the attributes of an image-based product.
  • FIGS. 17 A- 17 B show a user interface that can be used to implement process shown in FIG. 16.
  • FIG. 18 shows a user interface that can be used to allow a user to select an image for subsequent processing.
  • FIG. 19 is a block diagram of a computer system.
  • FIG. 20 is flow diagram of an operation that changes one or more product attributes.
  • FIG. 21 is a block diagram of an approach to using current product attributes to generate a preview image and/or an image-based product.
  • FIG. 22 is a flow diagram of a process for automatically storing state information.
  • FIG. 23 is a flow diagram of a process for storing and using modification history information.
  • FIGS. 24 A- 24 D are block diagrams of a stack data structure that can be used to store modification history information.
  • System 100 includes a server 102 that is connected to one or more client computers 104 by a network 106 such as the Internet.
  • the client computers 104 can be connected to a digital camera 108 so that a user can upload captured digital images from the digital camera 108 to the client computer 104 .
  • the client computer 104 can execute image processing software such as ADOBE PHOTOSHOP® or the GIMP in order to create and/or edit digital images.
  • the client computer 104 includes a storage medium 110 such as a hard disk for storing the digital images.
  • the client computer 104 can be implemented using a variety of hardware and software.
  • the client computer 104 can be a general-purpose device such as a personal computer, portable computer, or portable digital assistant (“PDA”) or as a special-purpose device such as a point-of-sale kiosk having an embedded computer.
  • PDA portable digital assistant
  • the client computer 104 is connected to the network 106 , for example, using a modem or network interface card.
  • the system 100 can be implemented as a browser-based system in accordance with the standard protocols for communicating over the Word Wide Web.
  • a user of the client computer 104 can execute a browser to connect to and interact with the server 102 .
  • the server 102 includes a web front end 112 that manages the communications with the client computer 104 .
  • the user of the client computer 104 can upload digital images to the server 102 .
  • the web front end 112 receives the uploaded digital images and stores them in an image database 114 .
  • the user of the client computer 104 can also order image prints made from selected images.
  • the server 102 includes, or is connected to, a print lab 116 .
  • the print lab 116 receives the selected images from the server 102 and generates image prints from the selected images.
  • the print lab 116 can generate other image-based products.
  • the print lab 116 can frame image prints in one or more frames selected by the user and/or print or otherwise embody the selected images in other items such as clothing, buttons, mugs, cards, invitations, and calendars.
  • the items generated by the print lab 116 can be shipped to the user using a conventional shipping service such as the UNITED STATES POSTAL SERVICE or FEDERAL EXPRESS®. Commonly assigned co-pending U.S.
  • FIG. 2 is a flow diagram of a high-level process 200 for offering image-based products for sale over a computer network such as the Internet (e.g., using system 100 shown in FIG. 1).
  • an image is received (block 202 ).
  • a user executing a browser on the client computer 104 can access the web front end 112 of the server 102 and upload a digital image to the server 102 .
  • the server 102 receives the uploaded image, which the user can select for subsequent processing as described below.
  • the uploaded image can be stored in the image database 114 ; thereafter, the image can be received from the image database 114 .
  • the web front end 112 can be configured to allow the user to view images stored in the image database 114 on the client computer 104 and select an image for subsequent processing.
  • FIG. 18 shows one example of a user interface 1800 that can be used to allow a user to select an image for subsequent processing.
  • a plurality of “thumbnail” versions 1802 of images stored in the image database 114 also referred to here as “thumbnails” are displayed in the user interface 1800 .
  • the user interface 1800 can be configured in a conventional manner so that a user can select a particular image by clicking on the thumbnail 1802 associated with that image.
  • the user interface 1800 can include a plurality of buttons 1804 (or other user interface controls) associated with one or more images stored in the image database 114 ; a user can click on (or otherwise actuate) one of the buttons 1804 in order to select the one or more images associated with that button 1804 .
  • the selected image is then retrieved from the image database 114 and used for subsequent processing.
  • the image can be received and selected in other ways, including for example, as an attachment to an email or embodied on a storage medium such as photograph, a flash memory card or CD-ROM.
  • an image-based product is an item, regardless of medium, that includes a visual representation of at least a portion of one or more images.
  • image-based products include image prints, buttons, posters, mugs, clothing, and cards in which at least a portion of one or more images is printed or otherwise incorporated or embodied.
  • a preview image is a visual representation of an image-based product incorporating the selected image. The preview image is displayed in order to give the user an idea of what an image-based product incorporating the selected image will look like.
  • an order is received for an image-based product incorporating the selected image (block 206 ).
  • the order can be received by the web front end 112 from the user's client computer 104 .
  • the order can be received in other ways including, for example, via electronic mail, Internet Relay Chat, the telephone, and/or the mail.
  • the order will include information specifying (or otherwise referring or pointing to) a type of image-based product, the image to incorporate into the image-based product, a quantity of the image-based product being ordered, payment information, and delivery information.
  • the order is fulfilled (block 208 ).
  • the order can be fulfilled by printing or otherwise generating the image-based product and delivering the product to the customer.
  • FIG. 3 is a flow diagram of a high-level process 300 of displaying preview images of an image-based product.
  • a set of attributes for the image-based product (also referred to here as “product attributes”) is received (block 302 ).
  • the product attributes can include, for example, the size of the image print, the number and identity of the images included in the image print, cropping information, and the size, style, and color of any border surrounding the image portion of the image print.
  • the set of attributes can be received from the user, for example, by having the user enter or select attributes using a browser executing on the client computer 104 . Also, the set of attributes can be retrieved from storage, for example, from a database, or otherwise provided.
  • a preview image is generated using the current set of product attributes for that image-based product (block 304 ).
  • a preview image can be generated that shows an image print incorporating the portions of the images specified in the product attributes.
  • the preview image can show any other feature specified in the product attributes.
  • the preview image can be scaled to the specified image print size and include the specified border size and style.
  • the preview image is then displayed (block 306 ).
  • the preview image can be generated by the web front end 112 and downloaded to, and displayed on, the client computer 104 .
  • any changes to the product attributes can be received ( 308 ).
  • the user may wish to change one or more of the product attributes.
  • the user can makes such changes to the product attributes using a browser executing on the client computer 104 .
  • the changes can then be transmitted to the web front end 112 , which updates the product attributes for the currently displayed image-based product.
  • Process 300 then loops back to block 304 and generates and displays a new preview image and receives any further changes to the product attributes.
  • changing one or more attributes of an image-based product involves selecting which product attributes to change (block 2002 ) and then selecting a new value for the selected attributes (block 2004 ). Both of these operations can be performed manually by a user (e.g., where the user actuates one or more controls in order to select which product attributes to change and/or to select a new value for the selected attributes) or automatically by the system 100 (e.g., where the system 100 is commanded by the user or otherwise to select which product attributes to change and/or to select a new value for the selected attributes). For example, the system 100 can automatically select the one or more product attributes to change at random.
  • the system 100 can automatically select one or more of the product attributes to change based on information relating to the user's images, past transactions, and account information. For example, the system 100 can select one or more product attributes that the user's account information indicates the user has not tried changing (perhaps, because the user was unaware that the particular attribute could be changed). Also, the system 100 can select new values for the selected product attributes at random and/or based on information relating to the user's images, past transactions, and account information. In this way, the system 100 suggests new ways to incorporate a user's image in an image-based product. The automatic selection of which product attributes to change and the automatic selection of a new value for the selected attributes can be performed by any component of the system 100 (e.g., by the server 102 and/or the client computer 104 ).
  • FIG. 4 is a flow diagram of a process 400 of automatically selecting new values for the selected product attributes as function of an image.
  • Process 400 includes identifying an attribute of the selected image (block 402 ).
  • the attribute of the selected image (also referred to here as the “image attribute”) can relate to any aspect of the image including, for example, when and how the image was captured, the colors, shapes, and patterns contained in the image, the resolution of the image, the format in which the image is stored, and the aspect ratio of the image.
  • Process 400 further includes selecting a new value for a product attribute for an image-based product based on the identified image attribute (block 404 ).
  • the product attribute can be the color of a border that surrounds the image portion of the image print.
  • Other examples of selecting a new value for a product attribute based on an identified image attribute include selecting which image or images (or portions thereof) to include in the image print or other image-based product (such as a framed image display).
  • a preview image can be generated (block 406 ) and displayed (block 408 ). After reviewing the preview image, the user can then make additional changes to the product attributes (e.g., by repeating process 400 for a different product attribute) and/or place an order for the displayed image-based product.
  • FIG. 5 is a flow diagram of a process 500 of automatically selecting a border color for an image print based on the colors contained in a selected image.
  • a set of representative colors for the selected image is generated (block 502 ).
  • a set of representative colors for the selected image can be generated by applying a color mapping algorithm to the selected image.
  • a suitable color mapping algorithm is the median cut algorithm, described in Paul Heckbert, “Color Image Quantization for Frame Buffer Display,” ACM, Computer Graphics, pages 297-304, 1982.
  • a border color is then selected as a function of at least one of the representative colors (block 504 ).
  • the border color is selected from the set of representative colors.
  • the border color can be selected based on popularity.
  • the representative colors in the set can be sorted according how many pixels in the selected image correspond to each color in the set.
  • the color in the set that is associated with the most pixels that is, the most popular representative color
  • Other approaches to selecting the border color from the set of representative colors can be used. For example, a border color that “matches” one of the representative colors (e.g., the complement of the most popular) can be selected. Other examples include selecting the border color at random (or pseudo-random) from the set of representative colors.
  • Such a random selection of the border color can be constrained based on the previous border color selections for that image (the previous selections for an attribute are referred to here as the attribute's “history”). For example, any previously selected border colors can be removed from the set of representative colors from which the random selection is made. Moreover, the border color can be selected from a predetermined border color order. The border color order can specify which colors are to be selected on successive automatic selections (e.g., selecting first the most popular representative color, then the complement of the most representative color, then the second most popular representative color, then the complement of the second most representative color, and so on).
  • a preview image is generated in which the selected image is surrounded by a border having the selected border color (block 506 ) and displayed (block 508 ).
  • the server 102 can generate a preview image having a border with the selected border color and download the preview image to the client computer 104 .
  • a browser executing on the client computer 104 can then display the preview image for the user to view.
  • the user can then make additional changes to the product attributes and/or place an order for the displayed image-based product.
  • a color in the image can be identified without first generating a set of representative colors.
  • the border color can be selected as a function of the identified image.
  • the border color can be set to the identified color or to a color that matches the identified color.
  • FIGS. 6 A- 6 B show an example of a user interface 600 that can be used to implement process 500 .
  • FIG. 6A after the user has selected an image for processing (for example, after the image has been uploaded to the server 102 and/or retrieved from the image database 114 ), preview image 602 of an image print incorporating the selected image is displayed in the user interface 600 .
  • a user can cause the server 102 to automatically select a border color for the image print by clicking on an “Auto Mat” button 604 .
  • the user selects an attribute of the image print to change (i.e., the border color product attribute) and causes the system to automatically select a new value (color) for the border color product attribute.
  • the server 102 After clicking on the “Auto Mat” button 604 , the server 102 generates a set of representative colors and selects one of the representative colors as the border color for the image.
  • the image 602 is displayed in the user interface 600 surrounded by a border 606 having the selected border color.
  • Such a user interface 600 need not provide additional screens and/or controls for allowing the user to select a particular color for the border color product attribute. Instead, the user interface 600 allows the user to request that the system select a border color for the image 602 by simply clicking a button 604 .
  • FIG. 7 is a flow diagram of a process 700 for automatically selecting multiple images to combine in an image-based product (e.g., using the system 100 shown in FIG. 1).
  • Process 700 includes receiving images from which the multiple images will be selected (block 702 ).
  • the images can be uploaded from a client computer 104 , retrieved from the image database 114 , and/or otherwise provided.
  • each received image can be identified as having either a “portrait” or “landscape” orientation.
  • An image having a portrait orientation is an image that was captured, created, and/or edited to be viewed with the longer sides of the image running in the vertical direction.
  • an image having a landscape orientation is an image that was captured, created, and/or edited to be viewed with the longer sides of the image running in the horizontal direction.
  • the order in which the images were received can be identified.
  • any other attribute of the received images can be used, including, for example, the subject matter of the images, how the images are categorized or organized by the user, whether the user has previously ordered image prints of the images, and/or colors, shapes, or patterns included in the images.
  • multiple images are selected based on the image attributes identified for the received images (block 706 ). For example, two images having a portrait orientation can be selected. If there are more than two images having a portrait orientation, two images can be selected based on an additional image attribute, for example, the order in which the images were received. Alternatively, if there are more than two images having a portrait orientation, two images can be selected at random (or according to some other criterion) from those received images having a portrait orientation. Which two images are selected for such an image-based product is a product attribute of such an image-based product.
  • a preview image is generated using the product attributes for the image-based product (block 708 ). For example, if two images have been selected, a preview image showing at least a portion of each of the two selected images will be generated. Then, the preview image will be displayed (block 710 ).
  • the preview image for example, can be generated by the server 102 , downloaded to the client computer 104 , and displayed on the client computer 104 by a browser executing on the client computer 104 .
  • the user can then make additional changes to the product attributes and/or place an order for product incorporating the selected image. For example, a user can crop an image of a person so as to show only the person's face. In this way, an image-based product (such as an image print) can be generated showing only the person's face.
  • User interface 900 includes a crop display 902 for indicating which parts of the image are currently included in a selected portion 904 and a cropped portion 906 of the image.
  • the crop display 902 is implemented as an HTML table cell having foreground and background images.
  • the background image is a JPEG-formatted version of the selected image.
  • the foreground image is a GIF image in which the pixels associated with the selected portion 904 are transparent and the pixels associated with the cropped portion 906 create a checkerboard pattern of alternating transparent and white (opaque) pixels.
  • the foreground image is used as a “crop mask” that is superimposed over the background image when the HTML table cell is displayed.
  • the user interface 900 includes crop shape buttons 912 that allow the user to select the shape of the selected portion 904 by clicking on one of the crop shape buttons 912 .
  • Clicking on one of the crop shape buttons 912 both selects which product attribute to change (i.e., the product attribute relating to the shape of the selected portion 904 ) and the new value for the selected product attribute (i.e., the particular shape associated with the button 912 on which the user clicked).
  • the user can select a square shape for the selection portion 904 by clicking on a button representing a square.
  • the user interface 900 also includes crop control buttons 914 .
  • the crop control buttons 914 include “In” and “Out” buttons 916 and 918 that allow the user to zoom the selected portion 904 of the image in and out, respectively.
  • the crop control buttons 914 also include “Move” buttons 920 that allow the user to move the selected portion 904 left, right, up, or down by clicking on appropriate buttons. Clicking on one of the crop control buttons 914 both selects which product attribute to change (i.e., the size or location of the selected portion 904 ) and the new value for the selected product attribute (i.e., by changing the size or location as directed by the particular button on which the user clicked). For example as shown in FIGS. 9 A- 9 B, if the user clicks on the left “Move” button 920 , the selected portion 904 is moved to the left and a new foreground image 908 is generated and displayed.
  • the user can adjust other product attributes and/or order an image-based product incorporating the image. For example, the user can click on a “Borders” button 922 in order to view and adjust the product attributes relating to border size, style, and color, as described below.
  • FIG. 10 is flow diagram of a process 1000 for allowing a user to crop a selected image.
  • Process 1000 can be implemented using the user interface 900 described above.
  • Process 1000 includes displaying the image (block 1002 ).
  • the selected image can be downloaded to the client computer as a JPEG image and used as the background image of the HTML table cell.
  • a crop mask is generated (block 1004 ), and the crop mask is displayed over the image (block 1006 ).
  • the crop mask contains a region corresponding to the selected portion of the image and a region corresponding to the cropped portion of the image.
  • the crop mask when displayed over the image, distinguishes the selected portion from the cropped portion of the image.
  • a crop mask can be generated as a GIF file in which the region of the crop mask corresponding to the selected portion of the image contains transparent pixels and the region of the crop mask corresponding to the cropped portion of the image contains pixels in a checkerboard pattern of alternating transparent and white (opaque) pixels.
  • the GIF crop mask can be downloaded to the client computer 104 and used as the foreground image of the HTML table cell.
  • the HTML table cell then can be displayed on the client computer 104 as shown in FIGS. 9 A- 9 B.
  • the selected portion 904 of the image is fully visible while the cropped portion 906 appears in a checkerboard pattern.
  • a crop command is received (which is checked in block 1008 of FIG. 10)
  • the product attributes related to cropping e.g., the shape, size, and location of the selected portion 904 of the image
  • a new crop mask is generated (block 1012 ).
  • a user can click on a crop shape button 912 in order to change the shape of the selected portion 904 and/or click on a crop control button 914 to zoom the selected portion 904 in and out and/or to move the selected portion 904 .
  • the crop command is sent to the server 102 , which receives the crop command and updates the product attributes related how the image is cropped.
  • the server 102 also generates a new GIF crop mask reflecting the new cropping-related product attributes.
  • the new crop mask is then displayed over the image (block 1014 ). Because only a relatively small crop mask image (as compared to the entire image) is generated and displayed each time the user changes how the image is cropped, such changes can be quickly displayed.
  • the new GIF crop mask can be downloaded to the client computer 104 and used as the foreground image in the HTML table cell.
  • the HTML table cell is then displayed with the new foreground image superimposed over the background image.
  • the user can adjust other product attributes and/or order an image-based product incorporating the image.
  • FIGS. 11 and 12A- 12 B Another implementation in which the user can both select the product attributes to change and the new values for the selected product attributes is shown in FIGS. 11 and 12A- 12 B.
  • the user can change product attributes relating to the border size, border style, border color, and print size of an image print.
  • FIG. 11 is a flow diagram of a process 1100 of changing the border size, border style, border color, and print size of an image print.
  • a preview image is generated (block 1102 ) using initial border size, border style, border color, and print size attributes and then displayed (block 1104 ).
  • the preview image is a scaled visual representation of how the image would look printed on an image print of the specified print size with the specified border size, style and color.
  • the preview image is generated so as to maintain the selected image's original aspect ratio; thus, the borders along the horizontal or vertical edges of the preview image may be greater than the minimum border width specified in the product attributes.
  • the selected image can have a landscape orientation and an original aspect ratio of 1.5 (e.g., an image originally captured as a 4 inches by 6 inches image).
  • the initial product attributes for the image print can include a print size of 5 inches by 7 inches and a minimum border width of 0.4 inches.
  • the border width along the vertical edges of the image print would need to be 0.433 inches and the border width along the horizontal edges of the image print would need to be 0.4 inches in order to maintain the selected image's original aspect ratio.
  • the preview image would be generated and displayed to show how the image would look printed on a 5 inches by 7 inches image print having a vertical border 0.4333 inches wide and a horizontal border 0.4 inches wide.
  • the product attributes are updated to reflect the changes made by the user (block 1108 ) and a new preview image is generated and displayed using the updated product attributes.
  • the user can change a product attribute by manipulating user interface controls such as buttons, selection boxes, and text entry fields.
  • the user can adjust other product attributes and/or order an image-based product incorporating the selected image.
  • FIGS. 12 A- 12 B An example of a user interface 1200 that can be used to implement process 1100 is shown in FIGS. 12 A- 12 B.
  • the user interface 1200 can be implemented as one or more web pages that are downloaded from the web front end 112 to the client computer 104 .
  • the client computer 104 executes a browser in order to communicate with the web front end 112 and to display the web pages on the client computer 104 .
  • the server 102 After one or more images have been uploaded from the client computer 104 and/or retrieved from the image database 114 and an image has been selected for subsequent processing, the server 102 generates a preview image 1202 using a default print size (for example, 5 inches by 7 inches as shown in FIG. 12A) and a default minimum border size (for example, 0.4 inches as shown in FIG.
  • a default print size for example, 5 inches by 7 inches as shown in FIG. 12A
  • a default minimum border size for example, 0.4 inches as shown in FIG.
  • the server 102 generates the preview image 1202 using a default border style (for example, a border style in which a black line separates the image from the border as shown in FIG. 12A).
  • the server 102 then downloads the preview image 1202 to the client computer 104 , and the client computer 104 displays the preview image 1202 as a part of a web page implementing the user interface 1200 .
  • the user interface 1200 includes “Print Size” selection control 1204 .
  • the user can click on the “Print Size” selection control 1204 to change the print size attribute for the image print.
  • the user interface 1200 also includes several “Border Styles” controls 1206 that the user can click on to change the border style product attribute of the image print.
  • the “Border Styles” controls 1206 include a “No Border” button 1208 , a “Black Line” button 1210 , a “White” button 1212 , an “Auto Mat” button 1214 , a “Shadow Box” button 1216 , and a “Blur” button 1218 .
  • the user can click on the “No Border” button 1208 to change the border style attribute for the image print to indicate that the image should be displayed with no border.
  • the user can click on the “Black Line” button 1210 to change the border style attribute for the image print to indicate that the image should be displayed with a black line separating the image from the border.
  • the user can click on the “White” button 1212 to change the border style attribute for the image print to indicate that the image should be displayed with a white border.
  • the user can click on the “Auto Mat” button 1214 to have the server 102 automatically select a new value for the border color attribute of the image print, for example, using the process 300 described above.
  • the user can click on the “Shadow Box” button 1216 to change the border style attribute for the image print to indicate that the outer edge of the image portion of the image print should be darkened.
  • the user can click on the “Blur” button 1218 to change the border style product attribute for the image print to indicate that the outer edge of the image portion of the image print should be blurred.
  • the user interface 1200 also includes several “Border Width” controls 1220 that the user can click on to change the border size product attribute for the image print.
  • the “Border Width” controls 1220 include separate buttons 1222 associated with various minimum border sizes (for example, 0.1, 0.2, 0.4, 0.5, 0.6, 0.8, 1.2, and 1.5 inches as shown in FIG. 12A). The user can change the border size product attribute by clicking on the button 1222 associated with the desired minimum border size.
  • the user interface 1200 also includes border style and border width indicators 1224 and 1226 .
  • the border style indicator 1224 is an icon that is located next to the “Border Style” control 1206 associated with the current border style attribute for the image print.
  • the border width indicator 1224 is an icon that is located next to the “Border Width” button 1222 associated with the current border size attribute for the image print. In this way, the border style and border width indicators 1224 and 1226 are used to display the current border style and border size settings.
  • the browser executing on the client computer 104 transmits the new print size, border style, or border size product attribute to the server 102 .
  • the server 102 updates the attributes maintained by server 102 for the current image-based product and generates a new preview image using the image's border size, border style, and print size attributes.
  • the server 102 then downloads the preview image 1202 to the client computer 104 , and the client computer 104 displays the preview image 1202 as a part of a web page implementing the user interface 1200 .
  • the browser executing on the client computer 104 transmits the new print size attribute to the server 102 .
  • the server 102 updates the print size attribute maintained by server 102 for the image print and generates a new preview image 1202 using the image's current border size, border style, and print size attribute.
  • the server then downloads the preview image 1202 to the client computer 104 , and the client computer 104 displays the preview image 1202 as a part of a web page implementing the user interface 1200 , as shown in FIG. 12B.
  • the user can adjust other product attributes and/or order an image-based product incorporating the selected image.
  • FIG. 13 is a flow diagram of a process 1300 for changing the content and position of text to be incorporated in an image-based product.
  • Process 1300 includes receiving an image (block 1302 ). Also, process 1300 includes receiving text (block 1304 ). The text can be received from any source.
  • the text can be received from a user (e.g., by having the user enter the information) or received from a process that generates the text based on information relating to the image (e.g., information relating to the subject matter of the image or the date on which the image was created).
  • information relating to the image e.g., information relating to the subject matter of the image or the date on which the image was created.
  • multiple versions of the image are displayed showing the text positioned on the image in various locations (block 1306 ).
  • four versions of the image can be displayed.
  • the text 1404 is positioned near the top edge of the image.
  • the text 1408 is positioned near the bottom edge of the image.
  • the text 1412 is positioned near the left edge of the image
  • the fourth version 1414 of the image the text 1416 is positioned near the right edge of the image.
  • a text position selection is received (block 1308 ).
  • the text position selection indicates which text position the user has selected. Any technique for receiving a text position selection can be used. For example, a text position selection can be selected by having the user click on one of the versions of the image. The text position selection then can be used in subsequent processing to position the text on the image in the selected location. For example, an image print can be generated from the image with the text located in the selected position.
  • FIGS. 15A and 15B are schematic diagrams of a user interface 1500 that can be used to implement process 1300 .
  • the user interface 1500 can be implemented as one or more web pages that are downloaded from the web front end 112 to the client computer 104 .
  • the client computer 104 executes a browser in order to communicate with the web front end 112 and to display the web pages on the client computer 104 .
  • the server 102 After one or more images have been uploaded from the client computer 104 and/or retrieved from the image database 114 and an image has been selected for subsequent processing, the server 102 generates and downloads to the client computer 104 a text entry web page 1502 (shown in FIG. 15A).
  • the browser executing on the client computer 104 displays the text entry web page 1502 .
  • the text entry web page 1502 displays the selected image in an image region 1504 of the text entry web page 1502 .
  • the text entry web page 1502 also includes a text entry region 1506 in which a user can enter text. After the user has completed entering text into the text entry region 1506 , the user can click on a “Go” button 1508 located on the text entry web page 1502 . After the user clicks the “Go” button 1508 , the text entered by the user in the text entry region 1506 is transmitted to the server 102 .
  • the server 102 After receiving the entered text from the client computer 104 , the server 102 generates and downloads to the client computer 104 a position selection web page 1550 shown in FIG. 15B. The client computer 104 then receives and displays the position selection web page 1550 .
  • the position selection web page 1550 includes multiple versions of the image 1552 with the entered text located on various positions 1554 of the image.
  • the position selection web page 1550 also includes a label 1556 instructing the user to select a text position by clicking on one of the versions 1552 of the image.
  • the client computer 104 transmits the user's text position selection to the server 102 .
  • the server 102 then update the product attributes for the image-based product so that the text position selection can be used in subsequent processing to position the text on the image-based product in the selected location. For example, an image print can be generated from the image with the text located in the selected position.
  • the system 100 can automatically select which product attributes to change and select new values for the selected product attributes.
  • a user can cause the system 100 to automatically select which product attributes to change and the new values for the selected product attributes by actuating a user interface control such as a button.
  • FIG. 16 is a flow diagram of process of causing a system 100 to automatically select which product attributes to change and the new values for the selected product attributes.
  • a user interface control is displayed (block 1602 ).
  • the user interface control can be any user interface element by which a user can initiate a command. Examples include a button, menu, menu item, command line, key sequence, selection box, and icon.
  • the system 100 automatically selects which product attributes to change (block 1606 ) and automatically selects the new values for the selected product attributes (block 1608 ).
  • a user can actuate a control by manipulating a mouse attached to the client computer 104 in order to click on a button, which causes the client computer 104 to send a command to the server 102 .
  • the server 102 can select the one or more product attributes to change at random and then randomly select new values for the selected product attributes.
  • the server 102 can select one or more of the product attributes to change based on information relating to the user's images, past transactions, and account information.
  • the server 102 can select one or more product attributes that the user's account information indicates the user has not tried changing (perhaps, because the user was unaware that the particular attribute could be changed). Also, the server 102 can select new values for the selected products using information relating to the user's images, past transactions, and account information.
  • a new preview image is generated (block 1610 ) and displayed (block 1612 ).
  • the preview image is displayed in a manner that allows the user to see what changes were made to the product attributes of the image-based product.
  • the user can “reverse engineer” the changes made by the system 100 in order to learn how to achieve the effect shown in the preview image and/or to undo or modify the changes made by the system 100 .
  • the appearance of the control is changed (block 1614 ).
  • the appearance of the control is changed in order to indicate to the user that, by actuating the control again, the system will change the one or more product attributes of the image-based product in a different way. If the appearance of the control is not changed after the user actuates the control, it is possible that the user would believe that actuating the control another time will not result in any new changes to the product attributes.
  • the appearance of the control can be changed, for example, by changing the size, shape, color, and location of the control, the type of control used, and/or any label, picture, or icon associated with the control.
  • an “undo” function can be provided so that the user can undo any changes that were made by the process 1600 and restore the selected product attributes to the values they had prior to execution of the process 1600 .
  • a “redo” function can be provided so that the user can redo changes that were previously undone.
  • FIGS. 17 A- 17 B An example of a user interface 1700 that can be used to implement process 1600 is shown in FIGS. 17 A- 17 B.
  • the user interface 1700 is generally the same as the user interface 1200 shown in FIGS. 12 - 12 B and includes the same elements.
  • the user interface 1700 can be implemented as one or more web pages that are downloaded from the web front end 112 to the client computer 104 .
  • the client computer 104 executes a browser in order to communicate with the web front end 112 and to display the web pages on the client computer 104 .
  • the server 102 After one or more images have been uploaded from the client computer 104 and/or retrieved from the image database 114 and an image has been selected for subsequent processing, the server 102 generates a preview image 1702 using a default print size (for example, 5 inches by 7 inches as shown in FIG. 17A) and a default minimum border size (for example, 0.4 inches as shown in FIG. 17A). In addition, the server 102 generates the preview image 1702 using a default border style (for example, a border style in which a black line separates the image from the border as shown in FIG. 17A). The server 102 then downloads the preview image 1702 to the client computer 104 , and the browser executing on the client computer 104 displays the preview image 1702 as a part of a web page implementing the user interface 1700 .
  • a default print size for example, 5 inches by 7 inches as shown in FIG. 17A
  • a default minimum border size for example, 0.4 inches as shown in FIG. 17A
  • the server 102 generates the preview image
  • the user interface 1700 also includes a control. Specifically, the user interface 1700 includes a “Delight Me!” button 1750 .
  • the server 102 selects one or more product attributes from those product attributes that can be changed using the controls displayed in FIG. 17A. For example, the server 102 can select one or more product attributes relating to border size, border style, and/or border color at random. Then, the server 102 selects new values for the selected product attributes. For example, in the example shown in FIGS.
  • the server 102 selects at random one or more product attributes to change (e.g., the border size, border style, and print size product attributes). Then, the server 102 sets the border size print attribute to 0.5 inches, the border style to shadow box (that is, the outer edges of the image portion of the preview image 1702 are darkened), and the print size is set to 4 inches by 6 inches. Also, the appearance of the “Delight Me!” button 1750 is changed. The label associated with the “Delight Me!” button 1750 is changed to “Delight Me Again!”. In addition, the server 102 generates a new preview image 1702 .
  • product attributes e.g., the border size, border style, and print size product attributes.
  • the server 102 sets the border size print attribute to 0.5 inches, the border style to shadow box (that is, the outer edges of the image portion of the preview image 1702 are darkened), and the print size is set to 4 inches by 6 inches.
  • the appearance of the “Delight Me!” button 1750 is changed.
  • the server 102 then downloads to the client computer 104 the new preview image 1702 and the changed “Delight Me Again!” button 1750 as a part of web page implementing the user interface 1700 .
  • the browser executing on the client computer 104 displays the preview image 1702 and the changed “Delight Me Again!” button 1750 , as shown in FIG. 17B.
  • the user interface 1700 also includes border style and border width indicators 1724 and 1726 .
  • the border style indicator 1724 is an icon that is located next to a “Border Style” control 1706 associated with the current border style attribute for the image.
  • the border width indicator 1724 is an icon that is located next to a “Border Width” button 1722 associated with the current border size product attribute for the image print.
  • the border style and border width indicators 1724 and 1726 show the user how the border style and border size settings were changed by the server 102 as a result of clicking the “Delight Me!” button 1750 .
  • the system 100 can be implemented so that state information for each image in the image database 114 is automatically stored on the server 102 .
  • the state information is “automatically” stored in that the user need not issue an explicit “save” command in order to store such state information on the server 102 .
  • the state information for each image stored on the server 102 can include the current product attributes associated with the image. Default product attributes are initially associated with an image when the server 102 receives the image. These default product attributes are automatically stored on the server 102 as the current product attributes for that image. Then, each time the user changes the product attributes associated with that image, the stored product attributes are updated to reflect such changes.
  • the user can use a client computer 104 to access the server 102 , select an image, and then select a new border style for an image print incorporating the selected image.
  • the server 102 generates a preview image reflecting the new product attributes, which is downloaded to, and displayed on, the client computer 104 for the user.
  • the server 102 updates the product attributes stored on the server 102 for that image to reflect the new border style. If the user then ceases accessing that image, performs some other operation (e.g., selects and changes attributes for a second image and/or disconnects from the server 102 ), and then subsequently accesses the first image, the server 102 can retrieve the stored current product attributes for that image and generate a preview image using the current product attributes.
  • the user can view a preview image reflecting the product attributes as they existed when the user last accessed the image.
  • the user can resume whatever editing operations the user was performing when the user last accessed the image.
  • FIG. 21 illustrates one approach to implementing such a system 100 .
  • the stored current product attributes for a given image 2102 can include product attributes relating to the rotation of the image, cropping information such as the boundary, shape, and orientation of the selected portion of the image, any processing to be applied to the image, the magnitude of such processing, and print size and orientation (e.g., where the image-based product is an image print).
  • the stored current product attributers are used by a filter 2104 that is applied to the image 2102 in order to generate a preview image 2106 . Also, the filter 2104 is applied to the image 2102 in order to generate an image-based product 2108 from the image 2102 .
  • FIG. 22 is a flow diagram of a process 2200 for automatically storing state information including the current product attributes associated with an image.
  • the stored product attributes for that image are updated (block 2204 ).
  • the user can cause the server 102 to automatically select a border color for an image print.
  • the product attributes stored on the server 102 are updated to reflect the selected border color.
  • an updated preview image is generated from the updated state information (block 2206 ).
  • the filter 2104 can use the updated state information to generate a preview image with a border having the selected border color.
  • the updated preview image can then be displayed, for example, on the user's client computer 104 (block 2208 ).
  • the state information can include information about past states of the product attributes for the image.
  • the information about past states of the product attributes can include modification history information that can be used to “undo” changes the user has previously made to the product attributes. Also, this modification history information can be used to allow the user to “redo” any changes that have been undone.
  • modification history information is stored for each image. For example, the user can make changes to product attributes associated with a first image. Then, the user can cease accessing that image and perform some other operation—for example, accessing and changing product attributes associated with a second image and/or disconnecting from the server 102 . Subsequently (e.g., several days later), the system 102 can retrieve the modification history information for that image and use that information to allow the user to undo or redo changes made when the user last accessed that image.
  • FIG. 23 is a flow diagram of a process 2300 for storing and using modification history information.
  • the current stored product attributes for that image can be updated (block 2304 ).
  • information that can be used to undo the change is added to the modification history information for that image (block 2306 ).
  • the modification history information can be stored in a stack 2400 associated with the image. Each time a change is made to the product attributes of the image, a new record is created and pushed onto the stack 2400 .
  • Each record contains information indicating which product attribute was changed, the value of the product attribute before the change was made, and the value of the product attribute after the change was made. For example, if the border color associated with the image is changed from a green color to a blue color, a new record 2402 is created and pushed onto the stack 2400 .
  • the record 2402 contains information indicating that the border color attribute was changed (item 2404 ) and information indicating that the border color attribute was changed from a green color (item 2406 ) to a blue color (item 2408 ).
  • the record 2402 is pointed at by an undo pointer 2410 , which can be used to identify which record in the stack 2400 is associated with the last change made to the product attributes.
  • a redo pointer 2412 can be provided which points to the record associated with the last change that was undone. However, in the implementation shown in FIGS. 24 A- 24 D, each time a new record is pushed onto the stack 2400 , the redo pointer 2412 is set to null. That is, in such an implementation, the user can only issue a redo command immediately after performing one or more undo or redo commands.
  • a new record 2416 is created and pushed onto the stack 2400 .
  • the record 2416 contains information indicating that the border width attribute was changed (item 2418 ) and information indicating that the border width attribute was changed from 0.1 inches (item 2420 ) to 0.2 inches (item 2422 ).
  • the undo pointer 2410 is updated to point to record 2416 . Because a new record was pushed onto the stack 2400 , the redo pointer 2412 is set to null.
  • the server 102 retrieves the modification history for the last change that was made to the product attributes of the image (block 2310 ) and the last change is undone (block 2312 ). For example, if the user issues an undo command (e.g., by clicking on an “undo” button displayed on the client computer 104 ), the server 102 retrieves the record associated with the last change made to the product attributes for the image, which is pointed to by the undo pointer 2410 . As shown in FIG. 24B, the undo pointer 2410 points to the record 2416 . The server 102 uses item 2418 to determine that the border width attribute was the last attribute that was changed.
  • an undo command e.g., by clicking on an “undo” button displayed on the client computer 104
  • the server 102 retrieves the record associated with the last change made to the product attributes for the image, which is pointed to by the undo pointer 2410 .
  • the undo pointer 2410 points to the record 2416 .
  • the server 102 uses item 2418 to
  • the server 102 sets the current border width attribute for the image to the value contained in item 2420 (which contains the value of the border width attribute before the change associated with record 2416 was made).
  • a new preview image can then be generated using the updated (undone) product attributes and displayed for the user.
  • the record 2416 is retained in the stack 2400 so as to allow the user to redo the change associated with record 2416 as described below.
  • the undo pointer 2410 is updated to point to the record associated with the last change that was made prior to the change associated with record 2416 . That is, the undo pointer 2410 is updated to point to record 2402 .
  • the redo pointer 2412 is updated to point to the record 2416 since the record 2416 is associated with the last change that was undone.
  • a user issues a redo command (which is checked in block 2314 shown in FIG. 23)
  • the modification history information for the last change that was undone is retrieved (block 2316 ) and that change is redone (block 2318 ).
  • a change is “redone” by re-making the change that was previously undone. For example, if the user issues a redo command (e.g., by clicking on a “redo” button displayed on the client computer 104 ), the server 102 retrieves the record associated with the last change that was undone, which is pointed to by the redo pointer 2412 . As shown in FIG. 24C, the redo pointer 2412 points to the record 2416 .
  • the server 102 uses item 2418 to determine the last change that was undone changed the border width attribute. Then, as shown in FIG. 24D, the server 102 sets the current border width attribute for the image to the value contained in item 2422 (which contains the value of the border width attribute after the change associated with record 2416 was made). A new preview image can then be generated using the updated product attributes and displayed for the user.
  • the redo pointer 2412 is updated to point to the record in the stack 2400 associated with the last change that was undone prior to the change associated with record 2416 , if any. As shown in FIG. 24D, the redo pointer 2412 is set to null since there is no record in the stack 2400 associated with a change that was undone prior to the change associated with record 2416 .
  • the undo pointer 2410 is set to point to record 2416 , since record 2416 is associated with the last change that was made to the product attributes.
  • the invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them.
  • Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to the displayed image-based product.
  • a diptych or triptych image-based product can be generated as a single image print including the selected images.
  • separate image prints can be printed for each of the selected images and the image prints can be combined in an image-based product, for example, by mounting the image prints together in a frame.
  • FIGS. 8 A- 8 B show an example of a user interface 800 that can be used to implement process 700 .
  • the user interface 800 first displays received images 802 .
  • the images can be selected from the images the user has uploaded (for example, using the interface 1800 ).
  • a user can have a diptych created from two images automatically selected from the received images 802 by clicking a “Make Diptych” button 804 .
  • the server 102 identifies each image 802 as having either a portrait or landscape orientation. Also, the server 102 can order the images 802 according to the order in which the displayed images were received.
  • the server 102 selects two images having a portrait orientation.
  • the server 102 generates a preview image 806 including the two selected images and, as shown in FIG. 8B, the preview image 806 is displayed in the user interface 800 .
  • the user can order the image-based product (that is, the diptych) shown in the preview image 806 by clicking an “Order” button 808 .
  • the diptych shown in the preview image 806 can be generated as a single image print including the two selected images. Alternatively, separate image prints can be printed for each of the two selected images and combined in the image-based product, for example, by mounting the image prints together in a frame.
  • FIGS. 9 A- 9 B and 10 are screenshots of a user interface 900 for allowing a user to specify the portion of a selected image that will be visible in an image-based product. This operation is commonly referred to as “cropping” an image. Typically, a user crops an image by selecting a portion of the image (referred to here as the “selected” portion) that will be visible in the image-based product.
  • an image-based product can be generated in which only the selected portion of the image is incorporated (or otherwise made visible); the rest of the image (referred to here as the “cropped” portion) is not included (or otherwise made visible) in such an image-based perform functions of the invention by operating on input data and generating output.
  • the invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device.
  • Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language.
  • Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Generally, a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
  • ASICs application-specific integrated circuits
  • the invention can be implemented on a computer system having a display device such as a monitor or LCD screen for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer system.
  • the computer system can be programmed to provide a graphical user interface through which computer programs interact with users.
  • FIG. 19 shows a block diagram of a computer system 1900 suitable for implementing or performing the apparatus or methods of the invention.
  • the computer system 1900 illustrated in FIG. 19 represents a typical hardware setup for executing software that allows a user to perform tasks such as communicating with other computer users, accessing various computer resources, and viewing, creating, or otherwise manipulating electronic content—that is, any combination of text, images, movies, music or other sounds, animations, 3D virtual worlds, and links to other objects.
  • the system includes various input/output (I/O) devices (mouse 1903 , keyboard 1905 , and display 1907 ) and a general purpose computer 1902 having a central processor unit (CPU) 1921 , an I/O unit 1917 and a memory 1909 that stores data and various programs such as an operating system 1911 , and one or more application programs 1913 .
  • the computer system 1900 also typically includes some sort of communications card or device 1923 (e.g., a modem or network adapter) for exchanging data with a network 1927 via a communications link 1925 (e.g., a telephone line).
  • a communications card or device 1923 e.g., a modem or network adapter

Abstract

A system and method for changing attributes of an image-based product in which an attribute of a first image is automatically identified and a new value for a product attribute of the image-based product is automatically selected based on the image attribute. Also, a user interface can be provided that allows a user to actuate a user interface control in order to select a new value for a product attribute of an image-based product. Such techniques can be used to offer image-based products for sale over a computer network such as the Internet so that the user can change attributes of the image-based products before ordering.

Description

    TECHNICAL FIELD
  • This disclosure relates to a method and system of changing attributes of an image-based product. [0001]
  • BACKGROUND
  • Images can be generated in several ways. For example, an image can be captured using a film-based or digital camera and/or created and edited using image processing software such as ADOBE PHOTOSHOP® or the GNU IMAGE MANIPULATION PROGRAM (“GIMP”). Images captured using a film-based camera typically are stored as film negatives. Images captured using a digital camera typically are stored as digital files residing in the memory of the digital camera and/or a storage medium to which the file has been transferred (for example, a hard drive or CDROM). Images created using image processing software are typically stored as a digital file residing on a computer readable medium such as a hard drive. [0002]
  • An image-based product can be generated from such stored images. As used here, the term “image-based product” refers to an item, regardless of medium, that includes a visual representation of at least a portion of one or more images. One example of an image-based product is an image print (also commonly referred to as a “photograph”). For example, a user can take a picture using a conventional film-based camera and then bring the exposed film to a photo-finishing laboratory to have the laboratory develop the exposed film and generate an image print. [0003]
  • In addition to a visual representation of at least a portion of one or more images, an image-based product can include other components. One conventional type of image-based product is created by mounting an image print in a frame. For example a user can physically take an image print to a frame shop (i.e., to a “brick-and-mortar” frame shop) in order to select a frame (and other components such as a mat) in which to mount the image print. Such a user typically can seek assistance in selecting such components from an employee of the frame shop (referred to here as a “frame shop assistant”). The frame shop assistant can inspect the user's image print and select a mat and frame the assistant believes will look good with the image print. The user can then physically place the image print in or near the selected mat and frame in order to get an idea of how the image print would look mounted with the selected mat and frame. In this way, a user who has little training and experience in selecting an appropriate mat and frame can have a trained and experienced frame shop assistant select a mat and frame for the image print. [0004]
  • When a customer wishes to have a high-quality image print generated from a digital image, the customer need not physically take the digital image to a photo-finishing laboratory and instead can electronically transmit the digital image to an “online” photo-finishing laboratory using a computer network such as the Internet. For example, the customer can use an Internet browser program (referred to herein as a “browser”) such as NETSCAPE NAVIGATOR®, which is commercially available from Netscape Communications Corporation of Mountain View, Calif., USA. The customer can direct the browser to a web site associated with the online photo-finishing laboratory and upload the digital image to a server hosting the web site. The online photo-finishing laboratory can then take the digital image from the web server and produce a high-quality image print from the digital image in a conventional manner. The online photo-finishing laboratory then typically sends the high-quality image print to the customer using a delivery service such as the UNITED STATES POSTAL SERVICE or FEDERAL EXPRESS®. [0005]
  • SUMMARY
  • Various implementations may include one or more of the following features. [0006]
  • In general, in one aspect, a method can include automatically identifying an attribute of a first image. The method also can include automatically selecting a new value for a product attribute of an image-based product based on the image attribute. The image-based product can incorporate at least a portion of the first image. [0007]
  • Advantageous implementations of the method include one or more of the following features. The method can also include receiving an order for the image-based product. Also, a first preview image of the image-based product can be generated and displayed. Displaying the first preview image can include downloading the first preview image to a client computer, and displaying the first preview image on the client computer. [0008]
  • Optionally, the method can also include receiving the first image. Receiving the first image can include uploading the first image (e.g., from a client computer to a server using a computer network such as the Internet), and/or storing the first image (e.g., in an image database). Also, receiving the first preview image can include receiving a plurality of images. A selection of the first image from the plurality of images can be received (e.g., after the plurality of images have been displayed). [0009]
  • Automatically identifying the image attribute can include analyzing the first image, and the new value for the product attribute can be automatically selected based on the analysis of the first image. Analyzing the first image can include generating a set of representative colors from the first image (e.g., by generating a color map for the first image, for example, by performing a median cut algorithm on the first image). Automatically selecting the new value for the product attribute can include selecting a color as a function of at least one of the representative colors. A color that matches at least one of the representative colors (e.g., a color that complements at least one of the representative colors) can be selected. Also, a color can be selected from the set of representative colors, for example, by selecting the most popular color from the set of representative colors or selecting a color at random from the set of representative colors. In one implementation, the product attribute can be a border color product attribute of the image-based product and the new value can be the selected color. In such an implementation, the method can further include generating a second preview image of the image-based product having a border. The color of the border can be the color specified by the border color product attribute. [0010]
  • Optionally, selecting a new value for the product attribute can include selecting the new value at random. Also, selecting a new value for the product attribute can include selecting the new value at psuedo-random. The selection of the new value can be constrained based on previous values of the product attribute. Also, selecting a new value for the product attribute can include selecting the new value from a predetermined ordering of values. [0011]
  • The product attribute can relate to which images are incorporated in the image-based product, and the image-based product can further incorporate at least a portion of a second image. In such a case, the method can further include receiving a plurality of images. An image attribute of each of the received images can be automatically identified, and the first and second images can be automatically selected from the received images based on the image attributes of the received images. The first and second images can be selected from a subset of the received images having similar image attributes. For example, the orientation of each of the received images can be determined, and the first and second images can be selected from a subset of the received images having a portrait orientation or from a subset of the received images having a landscape orientation. In such an implementation, the image-based product can be a diptych or a triptych. [0012]
  • The method can also include fulfilling the order for the image-based product. Also, the image-based product can be an image print or a framed image print, for example. [0013]
  • Optionally, the method can also include storing state information about the first image. The state information can be updated each time a new value for the product attribute is selected. The state information can include information about a current state of the product attribute and/or information about a past state of the product attribute. The information about the past state of the product attribute can include undo information for undoing the selection of the new value for the product attribute. In such an implementation, an undo command can be received, and the selection of the new value for the product attribute based on the undo information can be undone. Also, the information about the past state of the product attribute can include redo information for redoing the selection of the new value for the product attribute. In such an implementation, a redo command can be received, and the selection of the new value for the product attribute can be redone based on the redo information. [0014]
  • In another aspect, a server can include a web front end that connects the server to a computer network such as the Internet. The server can also include a print lab that is in communication with the web front end. The print lab can generate an image-based product incorporating a first image. The server can include software tangibly stored on a computer-readable medium. The software can include instructions operable to cause the server to receive a first image via the computer network, automatically identify an image attribute of the first image, and automatically select a new value for a product attribute of an image-based product. The new value can be selected based on the image attribute, and the image-based product can incorporate at least a portion of the first image. Optionally, the server can include an image database in communication with the web front end that stores the first image. [0015]
  • Advantageous implementations of the server include one or more of the following features. The software can also include instructions operable to cause the server to generate a first preview image of the image-based product, download the first preview image to a client computer, and display the first preview image on the client computer. Also, the software can include instructions operable to cause the server to receive the first image from a client computer connected to the server using the computer network such as the Internet. [0016]
  • Optionally, the software can include instructions operable to cause the server to receive a plurality of images and a selection of the first image from the plurality of images. For example, the images and/or selection can be received from a client computer connected to the computer network. [0017]
  • The software can also include instructions operable to cause the server to analyze the first image. The new value for the product attribute can be automatically selected based on the analysis of the first image. The software also can include instructions operable to cause the server to generate a set of representative colors from the first image (e.g., by including instructions operable to cause the server to generate a color map for the first image, for example, by performing the median cut algorithm on the first image). [0018]
  • Moreover, the software can include instructions operable to cause the server to select a color as a function of at least one of the representative colors. For example, such instructions can include instructions operable to cause the server to select a color that matches at least one of the representative colors, e.g., by including instruction operable to cause the server to select a color that complements at least one of the representative colors. Also such instructions can include instructions operable to cause the server to select the color from the set of representative colors, for example, by including instructions operable to cause the server to select the most popular color or to select the color at random from the set of representative colors. In such an implementation, the product attribute can be a border color product attribute of the image-based product, and the new value can be the selected color. Optionally, the software can include instructions operable to cause the server to generate a second preview image of the image-based product having a border. The color of the border can be the color specified by the border color product attribute. [0019]
  • The software further can include instructions operable to cause the server to select the new value at random, at psuedo-random, and/or from a predetermined ordering of values. The selection of the new value can be constrained based on previous values of the product attribute. [0020]
  • The product attribute can relate to which images are incorporated in the image-based product, and the image-based product can incorporate at least a portion of a second image. In such an implementation, the software can further include instructions operable to cause the server to receive a plurality of images, automatically identify an image attribute of each of the received images, and automatically select the first and second images from the received images based on the image attributes of the received images. The software can include instructions operable to cause the server to determine the orientation of each of the plurality of images. The first and second images can be selected from the subset of images having a portrait orientation or from the subset of images having a landscape orientation. The image-based product can be a diptych or a triptych. [0021]
  • Optionally, the software can further include instructions operable to cause the server to receive an order for the image-based product and fulfill the order for the image-based product. The image-based product can be, for example, an image print or a framed image print. [0022]
  • Also, the software can include instructions operable to cause the server to store state information about the first image. In such an implementation, the software can include instructions operable to cause the server to update the state information each time a new value for the product attribute is selected. The state information can include information about a current state of the product attribute and/or information about a past state of the product attribute. The information about the past state of the product attribute can include undo information for undoing the selection of the new value for the product attribute. For example, the software can include instructions operable to cause the server to receive an undo command and undo the selection of the new value for the product attribute based on the undo information. Also, the information about the past state of the product attribute can include redo information for redoing the selection of the new value for the product attribute. For example, the software can include instructions operable to cause the server to receive a redo command and redo the selection of the new value for the product attribute based on the redo information. [0023]
  • In another aspect, a method can provide a user on a client computer an interface for changing one or more product attributes of an image-based product that incorporates at least a portion of a first image. The client computer can be in communication with a server and can have a display and a pointing device operatively coupled to a cursor displayed on the display. Such a method can include displaying a border width control that, when actuated, supplies a new border size value to the server so that the server can change a border product attribute of the image-based product to the new border size value. Also, the method can include displaying a preview image of the image-based product. [0024]
  • Advantageous implementations of the method include one or more of the following features. The border width control can be a button associated with a minimum border size and/or can be part of web page that is downloaded by a browser executing on the client computer. Optionally, the method can further include displaying a print size control that, when actuated, supplies a new print size value to the server so that the server can change a print size product attribute of the image-based product to the new print size value. The print size control can be a selection box having a plurality of print size selections a user can select and/or can be part of web page that is downloaded by a browser executing on the client computer. [0025]
  • In another aspect, a method can provide a user on a client computer an interface for changing one or more product attributes of an image-based product that incorporates at least a portion of a first image. The client computer can be in communication with a server and can have a display and a pointing device operatively coupled to a cursor displayed on the display. Such a method can include displaying an image selection control that, when actuated, supplies an image selection to the server, the image selection identifying an image. Also, the method can include displaying a text entry control, e.g., a text entry field in which a user can enter text that, when actuated, supplies text to the server. The method can further include displaying a text position selection control including a plurality of versions of the image, each version of the image including at a least a portion of the text located in a different text position on the image. The text position selection control, when actuated, can supply to the server a text position selection that corresponds to one of the text positions. [0026]
  • Advantageous implementations of the method include one or more of the following features. The image selection control can be part of web page that is downloaded by a browser executing on the client computer. Such a web page can also include a plurality of thumbnail images so that the user can actuate the image selection control by clicking on a thumbnail image. The text entry control can be a text entry field in which a user can enter text and/or can be part of a web page that is downloaded by a browser executing on the client computer. Similarly, the text position selection control can be part of a web page that is downloaded by a browser executing on the client computer. Optionally, a user can actuate the text position selection control by clicking on one of the versions of the image. [0027]
  • Advantages that can be seen in implementations of the invention include one or more of the following. Generating and displaying a preview image of an image-based product allows a user to see how the image-based product will look with a particular set of product attributes. In this way, the user can determine if the user wishes to order such an image-based product and/or modify one or more of the attributes of that image-based product. For example, a preview image of an image print can be generated from an image selected by the user. The user can change one or more attributes of the image print, for example, the minimum border width, border style, border color, and print size. [0028]
  • Changing one or more attributes of an image-based product involves selecting which product attributes to change and then assigning a value to the selected attributes. Both of these operations can be performed manually by a user or automatically by a system. For example, a system can be configured to automatically select the one or more product attributes to change at random. In addition, or instead, the system can be configured to select one or more of the product attributes to change based on information relating to the user's images, past transactions, and account information. For example, the system can select one or more product attributes that the user's account information indicates the user has not tried changing (perhaps, because the user was unaware that the particular attribute could be changed). Also, the system can be configured to assign new values to the selected product attributes at random and/or based on information relating to the user's images, past transactions, and account information. In this way, the system can be configured to suggest new ways to incorporate a user's image in an image-based product. [0029]
  • For example, a system can be configured so as to allow the user to select one or more attributes to change and then have the system automatically assign values to the selected product attributes. The system can be configured to automatically assign the values to the selected product attributes as a function of a selected image. In one implementation, the system automatically selects a border color for an image print based on the colors contained in an image. In another implementation, the system can be configured to select multiple images to be included in an image-based product. In such an implementation, the product attribute assigned a new value is an attribute that indicates which images are to be included in the image-based product. [0030]
  • Moreover, the system can be configured to allow the user to both select which product attributes to change and assign a new value to the selected product attributes. For example, the system can be configured to present the user with an interface for cropping a selected image. In such an interface, a crop mask is displayed over the selected image. The system can generate the crop mask as GIF image in which the portion of the crop mask corresponding to a selected portion of the crop mask is transparent and the portion of the crop mask corresponding to a cropped portion of the image has a checkerboard pattern. By displaying the crop mask over the image, the selected portion of the image can be visually indicated. When a user changes the current selected portion of the image (for example, by actuating a control displayed on the client computer), the system generates a new crop mask based on the changes made by the user and displays the new crop mask over the image in order to visually indicate the new selected portion of the image. [0031]
  • Such an implementation is well suited for use with a browser-based system such as the World Wide Web. For example, the image and the crop mask can be displayed in an HTML table cell embedded in a web page. Because the system need only generate and download to the browser a new crop mask each time a user makes a change (as opposed to generating and downloading an entire image file), the system can display the changes made by the user relatively quickly. [0032]
  • In another implementation, the user can change product attributes relating to the border size, border style, border color, and/or print size of an image print. In yet another implementation, the user can specify the content and position of text to be incorporated in an image-based product. [0033]
  • Furthermore, a user interface control can be provided that the user can actuate in order to cause the system to automatically change one or more attributes of the image-based product. The system can be configured to change the attributes of the image-based product in a different way each time the control is actuated. Also, the appearance of the control can be changed each time the control is actuated in order to indicate to the user that actuating the control another time will cause the system to make different changes to the image-based product. [0034]
  • Moreover, state information can be automatically stored for each image, without requiring the user to issue an explicit “save” command. The state information can include information about the current product attributes associated with each image. For example, the stored state information can be updated each time the user changes the product attributes associated with an image. When the user later accesses that image (e.g., after the user performs some operation with another image and/or disconnects from the system), the stored state information can be retrieved and used as the current product attributes for the image. As a result, a preview image based on the retrieved state information can be generated and displayed for the user, and the user can resume manipulating the product attributes associated with the image starting from the point where the user was when the user last accessed the image. [0035]
  • The stored state information can also include information about past states of the product attributes associated with the image. The information about past states can include modification history that can be used to “undo” changes the user has previously made to the product attributes. Also, this modification history information can be used to allow the user to “redo” any changes that have been undone. For example, the user can make changes to product attributes associated with a first image. Then, the user can cease accessing that image and perform some other operation—for example, accessing and changing product attributes associated with a second image and/or disconnecting from the system. When the user subsequently accesses the image (e.g., several days later), the modification history information for that image can be retrieved and used to allow the user to undo or redo changes made while the user last accessed that image. [0036]
  • The details of one or more implementation of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims. [0037]
  • DESCRIPTION OF DRAWINGS
  • FIG. 1 is a block diagram of a system for generating image-based products from digital images. [0038]
  • FIG. 2 is a flow diagram of a process for offering image-based products for sale over a computer network. [0039]
  • FIG. 3 is a flow diagram of a process for displaying preview images of an image-based product. [0040]
  • FIG. 4 is a flow diagram of a process for automatically assigning a value to a product attribute. [0041]
  • FIG. 5 is a flow diagram of a process for automatically selecting a border color for an image print based on the colors contained in a selected image. [0042]
  • FIGS. [0043] 6A-6B show a user interface that can be used to implement the process shown in FIG. 5.
  • FIG. 7 is a flow diagram of a process for automatically selecting multiple images to combine in an image-based product. [0044]
  • FIGS. [0045] 8A-8B show a user interface that can be used to implement the process shown in FIG. 7.
  • FIGS. [0046] 9A-9B show a user interface for allowing a user to specify the portion of a selected image that will be visible in an image-based product.
  • FIG. 10 is flow diagram of a process for allowing a user to crop a selected image. [0047]
  • FIG. 11 is a flow diagram of a process for specifying the border size, border style, border color, and/or print size of an image print. [0048]
  • FIGS. [0049] 12A-12B show a user interface that can be used to implement the process shown in FIG. 11.
  • FIG. 13 is a flow diagram of a process for specifying the content and position of text to be incorporated in an image-based product. [0050]
  • FIG. 14 shows a display of four versions of an image. [0051]
  • FIGS. [0052] 15A-15B show a user interface that can be used to implement the process shown in FIG. 13.
  • FIG. 16 is a flow diagram of a process for automatically changing the attributes of an image-based product. [0053]
  • FIGS. [0054] 17A-17B show a user interface that can be used to implement process shown in FIG. 16.
  • FIG. 18 shows a user interface that can be used to allow a user to select an image for subsequent processing. [0055]
  • FIG. 19 is a block diagram of a computer system. [0056]
  • FIG. 20 is flow diagram of an operation that changes one or more product attributes. [0057]
  • FIG. 21 is a block diagram of an approach to using current product attributes to generate a preview image and/or an image-based product. [0058]
  • FIG. 22 is a flow diagram of a process for automatically storing state information. [0059]
  • FIG. 23 is a flow diagram of a process for storing and using modification history information. [0060]
  • FIGS. [0061] 24A-24D are block diagrams of a stack data structure that can be used to store modification history information.
  • Like reference symbols in the various drawings indicate like elements. [0062]
  • DETAILED DESCRIPTION
  • One implementation of a [0063] system 100 for generating image-based products from digital images is shown in FIG. 1. System 100 includes a server 102 that is connected to one or more client computers 104 by a network 106 such as the Internet. The client computers 104 can be connected to a digital camera 108 so that a user can upload captured digital images from the digital camera 108 to the client computer 104. Alternatively, or in addition, the client computer 104 can execute image processing software such as ADOBE PHOTOSHOP® or the GIMP in order to create and/or edit digital images. The client computer 104 includes a storage medium 110 such as a hard disk for storing the digital images. The client computer 104 can be implemented using a variety of hardware and software. For example, the client computer 104 can be a general-purpose device such as a personal computer, portable computer, or portable digital assistant (“PDA”) or as a special-purpose device such as a point-of-sale kiosk having an embedded computer.
  • The [0064] client computer 104 is connected to the network 106, for example, using a modem or network interface card. The system 100 can be implemented as a browser-based system in accordance with the standard protocols for communicating over the Word Wide Web. In such an implementation, a user of the client computer 104 can execute a browser to connect to and interact with the server 102. The server 102 includes a web front end 112 that manages the communications with the client computer 104. The user of the client computer 104 can upload digital images to the server 102. The web front end 112 receives the uploaded digital images and stores them in an image database 114.
  • The user of the [0065] client computer 104 can also order image prints made from selected images. The server 102 includes, or is connected to, a print lab 116. The print lab 116 receives the selected images from the server 102 and generates image prints from the selected images. The print lab 116 can generate other image-based products. For example, the print lab 116 can frame image prints in one or more frames selected by the user and/or print or otherwise embody the selected images in other items such as clothing, buttons, mugs, cards, invitations, and calendars. The items generated by the print lab 116 can be shipped to the user using a conventional shipping service such as the UNITED STATES POSTAL SERVICE or FEDERAL EXPRESS®. Commonly assigned co-pending U.S. patent applications Nos. 09/428,871 (entitled “MULTI-TIERED IMAGE DATABASE” and filed Oct. 27, 1999), 09/436,704 (entitled “DISTRIBUTING IMAGES TO MULTIPLE RECIPIENTS” and filed Nov. 9, 1999), and 09/450,075 (entitled “PRINTING IMAGES IN AN OPTIMIZED MANNER” and filed Nov. 29, 1999), all of which are incorporated herein by reference, disclose various approaches to implementing a system 100 for generating image-based products from digital images.
  • FIG. 2 is a flow diagram of a high-[0066] level process 200 for offering image-based products for sale over a computer network such as the Internet (e.g., using system 100 shown in FIG. 1). First, an image is received (block 202). For example, a user executing a browser on the client computer 104 can access the web front end 112 of the server 102 and upload a digital image to the server 102. The server 102 receives the uploaded image, which the user can select for subsequent processing as described below.
  • Also, the uploaded image can be stored in the [0067] image database 114; thereafter, the image can be received from the image database 114. The web front end 112 can be configured to allow the user to view images stored in the image database 114 on the client computer 104 and select an image for subsequent processing. FIG. 18 shows one example of a user interface 1800 that can be used to allow a user to select an image for subsequent processing. A plurality of “thumbnail” versions 1802 of images stored in the image database 114 (also referred to here as “thumbnails”) are displayed in the user interface 1800. The user interface 1800 can be configured in a conventional manner so that a user can select a particular image by clicking on the thumbnail 1802 associated with that image. In addition, or instead, the user interface 1800 can include a plurality of buttons 1804 (or other user interface controls) associated with one or more images stored in the image database 114; a user can click on (or otherwise actuate) one of the buttons 1804 in order to select the one or more images associated with that button 1804. The selected image is then retrieved from the image database 114 and used for subsequent processing. The image can be received and selected in other ways, including for example, as an attachment to an email or embodied on a storage medium such as photograph, a flash memory card or CD-ROM.
  • Then, one or more preview images for an image based product incorporating the selected image are displayed (block [0068] 204 shown in FIG. 2). As noted above, an image-based product is an item, regardless of medium, that includes a visual representation of at least a portion of one or more images. Examples of image-based products include image prints, buttons, posters, mugs, clothing, and cards in which at least a portion of one or more images is printed or otherwise incorporated or embodied. A preview image is a visual representation of an image-based product incorporating the selected image. The preview image is displayed in order to give the user an idea of what an image-based product incorporating the selected image will look like.
  • Next, an order is received for an image-based product incorporating the selected image (block [0069] 206). For example, the order can be received by the web front end 112 from the user's client computer 104. The order can be received in other ways including, for example, via electronic mail, Internet Relay Chat, the telephone, and/or the mail. Typically, the order will include information specifying (or otherwise referring or pointing to) a type of image-based product, the image to incorporate into the image-based product, a quantity of the image-based product being ordered, payment information, and delivery information. After the order has been received, the order is fulfilled (block 208). For example, the order can be fulfilled by printing or otherwise generating the image-based product and delivering the product to the customer.
  • FIG. 3 is a flow diagram of a high-[0070] level process 300 of displaying preview images of an image-based product. A set of attributes for the image-based product (also referred to here as “product attributes”) is received (block 302). In the case of an image print, the product attributes can include, for example, the size of the image print, the number and identity of the images included in the image print, cropping information, and the size, style, and color of any border surrounding the image portion of the image print. The set of attributes can be received from the user, for example, by having the user enter or select attributes using a browser executing on the client computer 104. Also, the set of attributes can be retrieved from storage, for example, from a database, or otherwise provided.
  • Then, a preview image is generated using the current set of product attributes for that image-based product (block [0071] 304). In the case of an image print, a preview image can be generated that shows an image print incorporating the portions of the images specified in the product attributes. The preview image can show any other feature specified in the product attributes. For example, the preview image can be scaled to the specified image print size and include the specified border size and style.
  • The preview image is then displayed (block [0072] 306). For example, the preview image can be generated by the web front end 112 and downloaded to, and displayed on, the client computer 104. Next, any changes to the product attributes can be received (308). After viewing the displayed preview image, the user may wish to change one or more of the product attributes. In one implementation, the user can makes such changes to the product attributes using a browser executing on the client computer 104. The changes can then be transmitted to the web front end 112, which updates the product attributes for the currently displayed image-based product. Process 300 then loops back to block 304 and generates and displays a new preview image and receives any further changes to the product attributes.
  • As shown in FIG. 20, changing one or more attributes of an image-based product involves selecting which product attributes to change (block [0073] 2002) and then selecting a new value for the selected attributes (block 2004). Both of these operations can be performed manually by a user (e.g., where the user actuates one or more controls in order to select which product attributes to change and/or to select a new value for the selected attributes) or automatically by the system 100 (e.g., where the system 100 is commanded by the user or otherwise to select which product attributes to change and/or to select a new value for the selected attributes). For example, the system 100 can automatically select the one or more product attributes to change at random. In addition, or instead, the system 100 can automatically select one or more of the product attributes to change based on information relating to the user's images, past transactions, and account information. For example, the system 100 can select one or more product attributes that the user's account information indicates the user has not tried changing (perhaps, because the user was unaware that the particular attribute could be changed). Also, the system 100 can select new values for the selected product attributes at random and/or based on information relating to the user's images, past transactions, and account information. In this way, the system 100 suggests new ways to incorporate a user's image in an image-based product. The automatic selection of which product attributes to change and the automatic selection of a new value for the selected attributes can be performed by any component of the system 100 (e.g., by the server 102 and/or the client computer 104).
  • In one implementation, the user selects one or more product attributes to change and the [0074] system 100 automatically selects new values for the selected product attributes as a function of a selected image. FIG. 4 is a flow diagram of a process 400 of automatically selecting new values for the selected product attributes as function of an image. Process 400 includes identifying an attribute of the selected image (block 402). The attribute of the selected image (also referred to here as the “image attribute”) can relate to any aspect of the image including, for example, when and how the image was captured, the colors, shapes, and patterns contained in the image, the resolution of the image, the format in which the image is stored, and the aspect ratio of the image.
  • [0075] Process 400 further includes selecting a new value for a product attribute for an image-based product based on the identified image attribute (block 404). In the case of an image print, the product attribute can be the color of a border that surrounds the image portion of the image print. Other examples of selecting a new value for a product attribute based on an identified image attribute include selecting which image or images (or portions thereof) to include in the image print or other image-based product (such as a framed image display). Then, a preview image can be generated (block 406) and displayed (block 408). After reviewing the preview image, the user can then make additional changes to the product attributes (e.g., by repeating process 400 for a different product attribute) and/or place an order for the displayed image-based product.
  • In one implementation of [0076] process 400, a border color (also referred to as a “mat”) for an image print is automatically selected. FIG. 5 is a flow diagram of a process 500 of automatically selecting a border color for an image print based on the colors contained in a selected image. After an image has been selected, a set of representative colors for the selected image is generated (block 502). For example, a set of representative colors for the selected image can be generated by applying a color mapping algorithm to the selected image. A suitable color mapping algorithm is the median cut algorithm, described in Paul Heckbert, “Color Image Quantization for Frame Buffer Display,” ACM, Computer Graphics, pages 297-304, 1982.
  • A border color is then selected as a function of at least one of the representative colors (block [0077] 504). In one approach, the border color is selected from the set of representative colors. For example, the border color can be selected based on popularity. The representative colors in the set can be sorted according how many pixels in the selected image correspond to each color in the set. Then, the color in the set that is associated with the most pixels (that is, the most popular representative color) is selected as the border color. Other approaches to selecting the border color from the set of representative colors can be used. For example, a border color that “matches” one of the representative colors (e.g., the complement of the most popular) can be selected. Other examples include selecting the border color at random (or pseudo-random) from the set of representative colors. Such a random selection of the border color can be constrained based on the previous border color selections for that image (the previous selections for an attribute are referred to here as the attribute's “history”). For example, any previously selected border colors can be removed from the set of representative colors from which the random selection is made. Moreover, the border color can be selected from a predetermined border color order. The border color order can specify which colors are to be selected on successive automatic selections (e.g., selecting first the most popular representative color, then the complement of the most representative color, then the second most popular representative color, then the complement of the second most representative color, and so on).
  • A preview image is generated in which the selected image is surrounded by a border having the selected border color (block [0078] 506) and displayed (block 508). For example, the server 102 can generate a preview image having a border with the selected border color and download the preview image to the client computer 104. A browser executing on the client computer 104 can then display the preview image for the user to view. As described above, the user can then make additional changes to the product attributes and/or place an order for the displayed image-based product.
  • In alternative implementations of [0079] process 400 in which a border color is automatically selected for an image-based product, a color in the image can be identified without first generating a set of representative colors. In such an implementation, the border color can be selected as a function of the identified image. For example, the border color can be set to the identified color or to a color that matches the identified color.
  • FIGS. [0080] 6A-6B show an example of a user interface 600 that can be used to implement process 500. As shown in FIG. 6A, after the user has selected an image for processing (for example, after the image has been uploaded to the server 102 and/or retrieved from the image database 114), preview image 602 of an image print incorporating the selected image is displayed in the user interface 600. A user can cause the server 102 to automatically select a border color for the image print by clicking on an “Auto Mat” button 604. In other words, the user selects an attribute of the image print to change (i.e., the border color product attribute) and causes the system to automatically select a new value (color) for the border color product attribute. After clicking on the “Auto Mat” button 604, the server 102 generates a set of representative colors and selects one of the representative colors as the border color for the image. Next, as shown in FIG. 6B, the image 602 is displayed in the user interface 600 surrounded by a border 606 having the selected border color. Such a user interface 600 need not provide additional screens and/or controls for allowing the user to select a particular color for the border color product attribute. Instead, the user interface 600 allows the user to request that the system select a border color for the image 602 by simply clicking a button 604.
  • In another implementation of [0081] process 400, multiple images are selected and combined in an image-based product. An image-based product containing two images is sometimes referred to as a “diptych,” and an image-based product containing three images is sometimes referred to as a “triptych.” FIG. 7 is a flow diagram of a process 700 for automatically selecting multiple images to combine in an image-based product (e.g., using the system 100 shown in FIG. 1). Process 700 includes receiving images from which the multiple images will be selected (block 702). For example, the images can be uploaded from a client computer 104, retrieved from the image database 114, and/or otherwise provided.
  • One or more attributes of the received images are identified (block [0082] 704). For example, each received image can be identified as having either a “portrait” or “landscape” orientation. An image having a portrait orientation is an image that was captured, created, and/or edited to be viewed with the longer sides of the image running in the vertical direction. On the other hand, an image having a landscape orientation is an image that was captured, created, and/or edited to be viewed with the longer sides of the image running in the horizontal direction. Also, the order in which the images were received can be identified. In addition, or instead, any other attribute of the received images can be used, including, for example, the subject matter of the images, how the images are categorized or organized by the user, whether the user has previously ordered image prints of the images, and/or colors, shapes, or patterns included in the images.
  • Next, multiple images are selected based on the image attributes identified for the received images (block [0083] 706). For example, two images having a portrait orientation can be selected. If there are more than two images having a portrait orientation, two images can be selected based on an additional image attribute, for example, the order in which the images were received. Alternatively, if there are more than two images having a portrait orientation, two images can be selected at random (or according to some other criterion) from those received images having a portrait orientation. Which two images are selected for such an image-based product is a product attribute of such an image-based product.
  • Next, a preview image is generated using the product attributes for the image-based product (block [0084] 708). For example, if two images have been selected, a preview image showing at least a portion of each of the two selected images will be generated. Then, the preview image will be displayed (block 710). The preview image, for example, can be generated by the server 102, downloaded to the client computer 104, and displayed on the client computer 104 by a browser executing on the client computer 104. As described above, the user can then make additional changes to the product attributes and/or place an order for product incorporating the selected image. For example, a user can crop an image of a person so as to show only the person's face. In this way, an image-based product (such as an image print) can be generated showing only the person's face.
  • [0085] User interface 900 includes a crop display 902 for indicating which parts of the image are currently included in a selected portion 904 and a cropped portion 906 of the image. In the implementation shown in FIGS. 9A-9B, the crop display 902 is implemented as an HTML table cell having foreground and background images. The background image is a JPEG-formatted version of the selected image. The foreground image is a GIF image in which the pixels associated with the selected portion 904 are transparent and the pixels associated with the cropped portion 906 create a checkerboard pattern of alternating transparent and white (opaque) pixels. The foreground image is used as a “crop mask” that is superimposed over the background image when the HTML table cell is displayed. Only those pixels in the background image associated with a transparent pixel in the foreground image will be visible through the foreground image. As a result, all the pixels of the selected portion 904 of the background image will be visible through the foreground image, while the cropped portion 906 of the background image will appear in a checkerboard pattern.
  • The [0086] user interface 900 includes crop shape buttons 912 that allow the user to select the shape of the selected portion 904 by clicking on one of the crop shape buttons 912. Clicking on one of the crop shape buttons 912 both selects which product attribute to change (i.e., the product attribute relating to the shape of the selected portion 904) and the new value for the selected product attribute (i.e., the particular shape associated with the button 912 on which the user clicked). For example, the user can select a square shape for the selection portion 904 by clicking on a button representing a square. The user interface 900 also includes crop control buttons 914. The crop control buttons 914 include “In” and “Out” buttons 916 and 918 that allow the user to zoom the selected portion 904 of the image in and out, respectively. The crop control buttons 914 also include “Move” buttons 920 that allow the user to move the selected portion 904 left, right, up, or down by clicking on appropriate buttons. Clicking on one of the crop control buttons 914 both selects which product attribute to change (i.e., the size or location of the selected portion 904) and the new value for the selected product attribute (i.e., by changing the size or location as directed by the particular button on which the user clicked). For example as shown in FIGS. 9A-9B, if the user clicks on the left “Move” button 920, the selected portion 904 is moved to the left and a new foreground image 908 is generated and displayed.
  • After the user has finished cropping the image, the user can adjust other product attributes and/or order an image-based product incorporating the image. For example, the user can click on a “Borders” [0087] button 922 in order to view and adjust the product attributes relating to border size, style, and color, as described below.
  • FIG. 10 is flow diagram of a [0088] process 1000 for allowing a user to crop a selected image. Process 1000 can be implemented using the user interface 900 described above. Process 1000 includes displaying the image (block 1002). For example, as described above, the selected image can be downloaded to the client computer as a JPEG image and used as the background image of the HTML table cell.
  • Then a crop mask is generated (block [0089] 1004), and the crop mask is displayed over the image (block 1006). The crop mask contains a region corresponding to the selected portion of the image and a region corresponding to the cropped portion of the image. The crop mask, when displayed over the image, distinguishes the selected portion from the cropped portion of the image. For example, as described above, a crop mask can be generated as a GIF file in which the region of the crop mask corresponding to the selected portion of the image contains transparent pixels and the region of the crop mask corresponding to the cropped portion of the image contains pixels in a checkerboard pattern of alternating transparent and white (opaque) pixels. The GIF crop mask can be downloaded to the client computer 104 and used as the foreground image of the HTML table cell. The HTML table cell then can be displayed on the client computer 104 as shown in FIGS. 9A-9B. The selected portion 904 of the image is fully visible while the cropped portion 906 appears in a checkerboard pattern.
  • When a crop command is received (which is checked in [0090] block 1008 of FIG. 10), the product attributes related to cropping (e.g., the shape, size, and location of the selected portion 904 of the image) are changed (block 1010) and a new crop mask is generated (block 1012). For example, a user can click on a crop shape button 912 in order to change the shape of the selected portion 904 and/or click on a crop control button 914 to zoom the selected portion 904 in and out and/or to move the selected portion 904. When the user issues such a crop command, the crop command is sent to the server 102, which receives the crop command and updates the product attributes related how the image is cropped. The server 102 also generates a new GIF crop mask reflecting the new cropping-related product attributes.
  • The new crop mask is then displayed over the image (block [0091] 1014). Because only a relatively small crop mask image (as compared to the entire image) is generated and displayed each time the user changes how the image is cropped, such changes can be quickly displayed. For example, the new GIF crop mask can be downloaded to the client computer 104 and used as the foreground image in the HTML table cell. The HTML table cell is then displayed with the new foreground image superimposed over the background image. As noted above, after the user has finished cropping the image, the user can adjust other product attributes and/or order an image-based product incorporating the image.
  • Another implementation in which the user can both select the product attributes to change and the new values for the selected product attributes is shown in FIGS. 11 and 12A-[0092] 12B. In this implementation, the user can change product attributes relating to the border size, border style, border color, and print size of an image print. FIG. 11 is a flow diagram of a process 1100 of changing the border size, border style, border color, and print size of an image print. First, a preview image is generated (block 1102) using initial border size, border style, border color, and print size attributes and then displayed (block 1104). The preview image is a scaled visual representation of how the image would look printed on an image print of the specified print size with the specified border size, style and color.
  • The preview image is generated so as to maintain the selected image's original aspect ratio; thus, the borders along the horizontal or vertical edges of the preview image may be greater than the minimum border width specified in the product attributes. For example, the selected image can have a landscape orientation and an original aspect ratio of 1.5 (e.g., an image originally captured as a 4 inches by 6 inches image). Also, the initial product attributes for the image print can include a print size of 5 inches by 7 inches and a minimum border width of 0.4 inches. For such an image and initial product attributes, the border width along the vertical edges of the image print would need to be 0.433 inches and the border width along the horizontal edges of the image print would need to be 0.4 inches in order to maintain the selected image's original aspect ratio. Thus, the preview image would be generated and displayed to show how the image would look printed on a 5 inches by 7 inches image print having a vertical border 0.4333 inches wide and a horizontal border 0.4 inches wide. [0093]
  • If after viewing the preview image the user changes a product attribute (which is checked in block [0094] 1106), the product attributes are updated to reflect the changes made by the user (block 1108) and a new preview image is generated and displayed using the updated product attributes. For example, the user can change a product attribute by manipulating user interface controls such as buttons, selection boxes, and text entry fields.
  • After the user has finished changing the border size, border style, border color, and print size attributes, the user can adjust other product attributes and/or order an image-based product incorporating the selected image. [0095]
  • An example of a [0096] user interface 1200 that can be used to implement process 1100 is shown in FIGS. 12A-12B. The user interface 1200 can be implemented as one or more web pages that are downloaded from the web front end 112 to the client computer 104. The client computer 104 executes a browser in order to communicate with the web front end 112 and to display the web pages on the client computer 104. After one or more images have been uploaded from the client computer 104 and/or retrieved from the image database 114 and an image has been selected for subsequent processing, the server 102 generates a preview image 1202 using a default print size (for example, 5 inches by 7 inches as shown in FIG. 12A) and a default minimum border size (for example, 0.4 inches as shown in FIG. 12A). In addition, the server 102 generates the preview image 1202 using a default border style (for example, a border style in which a black line separates the image from the border as shown in FIG. 12A). The server 102 then downloads the preview image 1202 to the client computer 104, and the client computer 104 displays the preview image 1202 as a part of a web page implementing the user interface 1200.
  • The [0097] user interface 1200 includes “Print Size” selection control 1204. The user can click on the “Print Size” selection control 1204 to change the print size attribute for the image print. The user interface 1200 also includes several “Border Styles” controls 1206 that the user can click on to change the border style product attribute of the image print. The “Border Styles” controls 1206 include a “No Border” button 1208, a “Black Line” button 1210, a “White” button 1212, an “Auto Mat” button 1214, a “Shadow Box” button 1216, and a “Blur” button 1218. The user can click on the “No Border” button 1208 to change the border style attribute for the image print to indicate that the image should be displayed with no border. The user can click on the “Black Line” button 1210 to change the border style attribute for the image print to indicate that the image should be displayed with a black line separating the image from the border. The user can click on the “White” button 1212 to change the border style attribute for the image print to indicate that the image should be displayed with a white border. The user can click on the “Auto Mat” button 1214 to have the server 102 automatically select a new value for the border color attribute of the image print, for example, using the process 300 described above. The user can click on the “Shadow Box” button 1216 to change the border style attribute for the image print to indicate that the outer edge of the image portion of the image print should be darkened. The user can click on the “Blur” button 1218 to change the border style product attribute for the image print to indicate that the outer edge of the image portion of the image print should be blurred.
  • The [0098] user interface 1200 also includes several “Border Width” controls 1220 that the user can click on to change the border size product attribute for the image print. The “Border Width” controls 1220 include separate buttons 1222 associated with various minimum border sizes (for example, 0.1, 0.2, 0.4, 0.5, 0.6, 0.8, 1.2, and 1.5 inches as shown in FIG. 12A). The user can change the border size product attribute by clicking on the button 1222 associated with the desired minimum border size.
  • The [0099] user interface 1200 also includes border style and border width indicators 1224 and 1226. The border style indicator 1224 is an icon that is located next to the “Border Style” control 1206 associated with the current border style attribute for the image print. Similarly, the border width indicator 1224 is an icon that is located next to the “Border Width” button 1222 associated with the current border size attribute for the image print. In this way, the border style and border width indicators 1224 and 1226 are used to display the current border style and border size settings.
  • If the user clicks on the “Print Size” [0100] control 1204 or on one of the “Border Styles” controls 1206 or “Border Width Buttons 1222, the browser executing on the client computer 104 transmits the new print size, border style, or border size product attribute to the server 102. After receiving the new print size, border style, or border size product attribute, the server 102 updates the attributes maintained by server 102 for the current image-based product and generates a new preview image using the image's border size, border style, and print size attributes. The server 102 then downloads the preview image 1202 to the client computer 104, and the client computer 104 displays the preview image 1202 as a part of a web page implementing the user interface 1200. For example, if the user clicks on the “Print Size” control 1204 to change the print size from 5 inches by 7 inches to 8 inches by 10 inches, the browser executing on the client computer 104 transmits the new print size attribute to the server 102. After receiving the new print size attribute, the server 102 updates the print size attribute maintained by server 102 for the image print and generates a new preview image 1202 using the image's current border size, border style, and print size attribute. The server then downloads the preview image 1202 to the client computer 104, and the client computer 104 displays the preview image 1202 as a part of a web page implementing the user interface 1200, as shown in FIG. 12B. As noted, above, after the user has finished changing the border size, border style, border color, and print size attributes, the user can adjust other product attributes and/or order an image-based product incorporating the selected image.
  • Another implementation in which the user can both select the product attributes to change and select new values for the selected attributes is shown in FIGS. [0101] 13-14 and 15A-15B. In this implementation, the user can change product attributes relating to the content and position of text to be incorporated in an image-based product. FIG. 13 is a flow diagram of a process 1300 for changing the content and position of text to be incorporated in an image-based product. Process 1300 includes receiving an image (block 1302). Also, process 1300 includes receiving text (block 1304). The text can be received from any source. For example, the text can be received from a user (e.g., by having the user enter the information) or received from a process that generates the text based on information relating to the image (e.g., information relating to the subject matter of the image or the date on which the image was created).
  • Next, multiple versions of the image are displayed showing the text positioned on the image in various locations (block [0102] 1306). For example, as shown in FIG. 14, four versions of the image can be displayed. In the first version 1402 of the image, the text 1404 is positioned near the top edge of the image. In the second version 1406 of the image, the text 1408 is positioned near the bottom edge of the image. In the third version 1410 of the image, the text 1412 is positioned near the left edge of the image, and in the fourth version 1414 of the image, the text 1416 is positioned near the right edge of the image.
  • Then, as shown in FIG. 13, a text position selection is received (block [0103] 1308). The text position selection indicates which text position the user has selected. Any technique for receiving a text position selection can be used. For example, a text position selection can be selected by having the user click on one of the versions of the image. The text position selection then can be used in subsequent processing to position the text on the image in the selected location. For example, an image print can be generated from the image with the text located in the selected position.
  • FIGS. 15A and 15B are schematic diagrams of a [0104] user interface 1500 that can be used to implement process 1300. The user interface 1500 can be implemented as one or more web pages that are downloaded from the web front end 112 to the client computer 104. The client computer 104 executes a browser in order to communicate with the web front end 112 and to display the web pages on the client computer 104. After one or more images have been uploaded from the client computer 104 and/or retrieved from the image database 114 and an image has been selected for subsequent processing, the server 102 generates and downloads to the client computer 104 a text entry web page 1502 (shown in FIG. 15A). The browser executing on the client computer 104 displays the text entry web page 1502. The text entry web page 1502 displays the selected image in an image region 1504 of the text entry web page 1502. The text entry web page 1502 also includes a text entry region 1506 in which a user can enter text. After the user has completed entering text into the text entry region 1506, the user can click on a “Go” button 1508 located on the text entry web page 1502. After the user clicks the “Go” button 1508, the text entered by the user in the text entry region 1506 is transmitted to the server 102.
  • After receiving the entered text from the [0105] client computer 104, the server 102 generates and downloads to the client computer 104 a position selection web page 1550 shown in FIG. 15B. The client computer 104 then receives and displays the position selection web page 1550. The position selection web page 1550 includes multiple versions of the image 1552 with the entered text located on various positions 1554 of the image. The position selection web page 1550 also includes a label 1556 instructing the user to select a text position by clicking on one of the versions 1552 of the image. When the user clicks on one of the multiple versions 1552 of the image, the client computer 104 transmits the user's text position selection to the server 102. The server 102 then update the product attributes for the image-based product so that the text position selection can be used in subsequent processing to position the text on the image-based product in the selected location. For example, an image print can be generated from the image with the text located in the selected position.
  • As noted above, the [0106] system 100 can automatically select which product attributes to change and select new values for the selected product attributes. In one implementation shown in FIGS. 16 and 17A-17B, a user can cause the system 100 to automatically select which product attributes to change and the new values for the selected product attributes by actuating a user interface control such as a button. FIG. 16 is a flow diagram of process of causing a system 100 to automatically select which product attributes to change and the new values for the selected product attributes. First, a user interface control is displayed (block 1602). The user interface control can be any user interface element by which a user can initiate a command. Examples include a button, menu, menu item, command line, key sequence, selection box, and icon.
  • When the user actuates the control (which is checked in block [0107] 1604), the system 100 automatically selects which product attributes to change (block 1606) and automatically selects the new values for the selected product attributes (block 1608). For example, a user can actuate a control by manipulating a mouse attached to the client computer 104 in order to click on a button, which causes the client computer 104 to send a command to the server 102. After receiving the command, the server 102 can select the one or more product attributes to change at random and then randomly select new values for the selected product attributes. In addition, or instead, the server 102 can select one or more of the product attributes to change based on information relating to the user's images, past transactions, and account information. For example, the server 102 can select one or more product attributes that the user's account information indicates the user has not tried changing (perhaps, because the user was unaware that the particular attribute could be changed). Also, the server 102 can select new values for the selected products using information relating to the user's images, past transactions, and account information.
  • After the [0108] system 100 has automatically selected one or more product attributes to change and has selected new values for the selected product attributes, a new preview image is generated (block 1610) and displayed (block 1612). Preferably, the preview image is displayed in a manner that allows the user to see what changes were made to the product attributes of the image-based product. By showing the changes that were made to the product attributes of the image-based product, the user can “reverse engineer” the changes made by the system 100 in order to learn how to achieve the effect shown in the preview image and/or to undo or modify the changes made by the system 100.
  • Also, the appearance of the control is changed (block [0109] 1614). The appearance of the control is changed in order to indicate to the user that, by actuating the control again, the system will change the one or more product attributes of the image-based product in a different way. If the appearance of the control is not changed after the user actuates the control, it is possible that the user would believe that actuating the control another time will not result in any new changes to the product attributes. The appearance of the control can be changed, for example, by changing the size, shape, color, and location of the control, the type of control used, and/or any label, picture, or icon associated with the control. Optionally, an “undo” function can be provided so that the user can undo any changes that were made by the process 1600 and restore the selected product attributes to the values they had prior to execution of the process 1600. Also, a “redo” function can be provided so that the user can redo changes that were previously undone.
  • An example of a [0110] user interface 1700 that can be used to implement process 1600 is shown in FIGS. 17A-17B. The user interface 1700 is generally the same as the user interface 1200 shown in FIGS. 12-12B and includes the same elements. The user interface 1700 can be implemented as one or more web pages that are downloaded from the web front end 112 to the client computer 104. The client computer 104 executes a browser in order to communicate with the web front end 112 and to display the web pages on the client computer 104. After one or more images have been uploaded from the client computer 104 and/or retrieved from the image database 114 and an image has been selected for subsequent processing, the server 102 generates a preview image 1702 using a default print size (for example, 5 inches by 7 inches as shown in FIG. 17A) and a default minimum border size (for example, 0.4 inches as shown in FIG. 17A). In addition, the server 102 generates the preview image 1702 using a default border style (for example, a border style in which a black line separates the image from the border as shown in FIG. 17A). The server 102 then downloads the preview image 1702 to the client computer 104, and the browser executing on the client computer 104 displays the preview image 1702 as a part of a web page implementing the user interface 1700.
  • The [0111] user interface 1700 also includes a control. Specifically, the user interface 1700 includes a “Delight Me!” button 1750. When the user clicks on the “Delight Me!” button 1750, the server 102 selects one or more product attributes from those product attributes that can be changed using the controls displayed in FIG. 17A. For example, the server 102 can select one or more product attributes relating to border size, border style, and/or border color at random. Then, the server 102 selects new values for the selected product attributes. For example, in the example shown in FIGS. 17A-17B, when the user clicks on the “Delight Me!” button 1750, the server 102 selects at random one or more product attributes to change (e.g., the border size, border style, and print size product attributes). Then, the server 102 sets the border size print attribute to 0.5 inches, the border style to shadow box (that is, the outer edges of the image portion of the preview image 1702 are darkened), and the print size is set to 4 inches by 6 inches. Also, the appearance of the “Delight Me!” button 1750 is changed. The label associated with the “Delight Me!” button 1750 is changed to “Delight Me Again!”. In addition, the server 102 generates a new preview image 1702. The server 102 then downloads to the client computer 104 the new preview image 1702 and the changed “Delight Me Again!” button 1750 as a part of web page implementing the user interface 1700. The browser executing on the client computer 104 displays the preview image 1702 and the changed “Delight Me Again!” button 1750, as shown in FIG. 17B.
  • The [0112] user interface 1700 also includes border style and border width indicators 1724 and 1726. The border style indicator 1724 is an icon that is located next to a “Border Style” control 1706 associated with the current border style attribute for the image. Similarly, the border width indicator 1724 is an icon that is located next to a “Border Width” button 1722 associated with the current border size product attribute for the image print. The border style and border width indicators 1724 and 1726 show the user how the border style and border size settings were changed by the server 102 as a result of clicking the “Delight Me!” button 1750.
  • The [0113] system 100 can be implemented so that state information for each image in the image database 114 is automatically stored on the server 102. The state information is “automatically” stored in that the user need not issue an explicit “save” command in order to store such state information on the server 102. For example, the state information for each image stored on the server 102 can include the current product attributes associated with the image. Default product attributes are initially associated with an image when the server 102 receives the image. These default product attributes are automatically stored on the server 102 as the current product attributes for that image. Then, each time the user changes the product attributes associated with that image, the stored product attributes are updated to reflect such changes.
  • For example, the user can use a [0114] client computer 104 to access the server 102, select an image, and then select a new border style for an image print incorporating the selected image. The server 102 generates a preview image reflecting the new product attributes, which is downloaded to, and displayed on, the client computer 104 for the user. The server 102 updates the product attributes stored on the server 102 for that image to reflect the new border style. If the user then ceases accessing that image, performs some other operation (e.g., selects and changes attributes for a second image and/or disconnects from the server 102), and then subsequently accesses the first image, the server 102 can retrieve the stored current product attributes for that image and generate a preview image using the current product attributes. Thus, even if the user subsequently accesses the first image after a substantial time period has passed (e.g., several days), the user can view a preview image reflecting the product attributes as they existed when the user last accessed the image. As a result, the user can resume whatever editing operations the user was performing when the user last accessed the image.
  • FIG. 21 illustrates one approach to implementing such a [0115] system 100. The stored current product attributes for a given image 2102 can include product attributes relating to the rotation of the image, cropping information such as the boundary, shape, and orientation of the selected portion of the image, any processing to be applied to the image, the magnitude of such processing, and print size and orientation (e.g., where the image-based product is an image print). The stored current product attributers are used by a filter 2104 that is applied to the image 2102 in order to generate a preview image 2106. Also, the filter 2104 is applied to the image 2102 in order to generate an image-based product 2108 from the image 2102.
  • FIG. 22 is a flow diagram of a [0116] process 2200 for automatically storing state information including the current product attributes associated with an image. When a change is made to a product attribute associated with an image (which is checked in block 2202), the stored product attributes for that image are updated (block 2204). For example, as described above in connection with FIGS. 5 and 6A-6B, the user can cause the server 102 to automatically select a border color for an image print. The product attributes stored on the server 102 are updated to reflect the selected border color. Then, an updated preview image is generated from the updated state information (block 2206). For example, the filter 2104 can use the updated state information to generate a preview image with a border having the selected border color. The updated preview image can then be displayed, for example, on the user's client computer 104 (block 2208).
  • In addition to information about the current state of product attributes associated with a given image, the state information can include information about past states of the product attributes for the image. The information about past states of the product attributes can include modification history information that can be used to “undo” changes the user has previously made to the product attributes. Also, this modification history information can be used to allow the user to “redo” any changes that have been undone. Separate modification history information is stored for each image. For example, the user can make changes to product attributes associated with a first image. Then, the user can cease accessing that image and perform some other operation—for example, accessing and changing product attributes associated with a second image and/or disconnecting from the [0117] server 102. Subsequently (e.g., several days later), the system 102 can retrieve the modification history information for that image and use that information to allow the user to undo or redo changes made when the user last accessed that image.
  • FIG. 23 is a flow diagram of a process [0118] 2300 for storing and using modification history information. For each change that is made to the product attributes of an image (which is checked in block 2302), the current stored product attributes for that image can be updated (block 2304). Also, information that can be used to undo the change is added to the modification history information for that image (block 2306). For example, as shown in FIG. 24A, the modification history information can be stored in a stack 2400 associated with the image. Each time a change is made to the product attributes of the image, a new record is created and pushed onto the stack 2400. Each record contains information indicating which product attribute was changed, the value of the product attribute before the change was made, and the value of the product attribute after the change was made. For example, if the border color associated with the image is changed from a green color to a blue color, a new record 2402 is created and pushed onto the stack 2400. The record 2402 contains information indicating that the border color attribute was changed (item 2404) and information indicating that the border color attribute was changed from a green color (item 2406) to a blue color (item 2408). The record 2402 is pointed at by an undo pointer 2410, which can be used to identify which record in the stack 2400 is associated with the last change made to the product attributes. Also, a redo pointer 2412 can be provided which points to the record associated with the last change that was undone. However, in the implementation shown in FIGS. 24A-24D, each time a new record is pushed onto the stack 2400, the redo pointer 2412 is set to null. That is, in such an implementation, the user can only issue a redo command immediately after performing one or more undo or redo commands.
  • As shown in FIG. 24B, if the user subsequently makes another change to the product attributes of the image, a [0119] new record 2416 is created and pushed onto the stack 2400. For example, if the user changes the border width of the image from 0.1 inches to 0.2 inches, the record 2416 contains information indicating that the border width attribute was changed (item 2418) and information indicating that the border width attribute was changed from 0.1 inches (item 2420) to 0.2 inches (item 2422). The undo pointer 2410 is updated to point to record 2416. Because a new record was pushed onto the stack 2400, the redo pointer 2412 is set to null.
  • If the user subsequently issues an undo command (which is checked in [0120] block 2308 as shown in FIG. 23), the server 102 retrieves the modification history for the last change that was made to the product attributes of the image (block 2310) and the last change is undone (block 2312). For example, if the user issues an undo command (e.g., by clicking on an “undo” button displayed on the client computer 104), the server 102 retrieves the record associated with the last change made to the product attributes for the image, which is pointed to by the undo pointer 2410. As shown in FIG. 24B, the undo pointer 2410 points to the record 2416. The server 102 uses item 2418 to determine that the border width attribute was the last attribute that was changed. Then, as shown in FIG. 24C, the server 102 sets the current border width attribute for the image to the value contained in item 2420 (which contains the value of the border width attribute before the change associated with record 2416 was made). A new preview image can then be generated using the updated (undone) product attributes and displayed for the user. In the implementation shown in FIGS. 24-24D, the record 2416 is retained in the stack 2400 so as to allow the user to redo the change associated with record 2416 as described below. The undo pointer 2410 is updated to point to the record associated with the last change that was made prior to the change associated with record 2416. That is, the undo pointer 2410 is updated to point to record 2402. The redo pointer 2412 is updated to point to the record 2416 since the record 2416 is associated with the last change that was undone.
  • If a user issues a redo command (which is checked in [0121] block 2314 shown in FIG. 23), the modification history information for the last change that was undone is retrieved (block 2316) and that change is redone (block 2318). A change is “redone” by re-making the change that was previously undone. For example, if the user issues a redo command (e.g., by clicking on a “redo” button displayed on the client computer 104), the server 102 retrieves the record associated with the last change that was undone, which is pointed to by the redo pointer 2412. As shown in FIG. 24C, the redo pointer 2412 points to the record 2416. The server 102 uses item 2418 to determine the last change that was undone changed the border width attribute. Then, as shown in FIG. 24D, the server 102 sets the current border width attribute for the image to the value contained in item 2422 (which contains the value of the border width attribute after the change associated with record 2416 was made). A new preview image can then be generated using the updated product attributes and displayed for the user. The redo pointer 2412 is updated to point to the record in the stack 2400 associated with the last change that was undone prior to the change associated with record 2416, if any. As shown in FIG. 24D, the redo pointer 2412 is set to null since there is no record in the stack 2400 associated with a change that was undone prior to the change associated with record 2416. The undo pointer 2410 is set to point to record 2416, since record 2416 is associated with the last change that was made to the product attributes.
  • The invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to the displayed image-based product. Such a diptych or triptych image-based product can be generated as a single image print including the selected images. Alternatively, separate image prints can be printed for each of the selected images and the image prints can be combined in an image-based product, for example, by mounting the image prints together in a frame. [0122]
  • FIGS. [0123] 8A-8B show an example of a user interface 800 that can be used to implement process 700. As shown in FIG. 8A, the user interface 800 first displays received images 802. The images can be selected from the images the user has uploaded (for example, using the interface 1800). A user can have a diptych created from two images automatically selected from the received images 802 by clicking a “Make Diptych” button 804. In the implementation shown in FIGS. 8A-8B, when the user clicks the “Make Diptych” button 804 the server 102 identifies each image 802 as having either a portrait or landscape orientation. Also, the server 102 can order the images 802 according to the order in which the displayed images were received. Then, the server 102 selects two images having a portrait orientation. The server 102 generates a preview image 806 including the two selected images and, as shown in FIG. 8B, the preview image 806 is displayed in the user interface 800. The user can order the image-based product (that is, the diptych) shown in the preview image 806 by clicking an “Order” button 808. The diptych shown in the preview image 806 can be generated as a single image print including the two selected images. Alternatively, separate image prints can be printed for each of the two selected images and combined in the image-based product, for example, by mounting the image prints together in a frame.
  • As noted above, in other implementations the user can both select the product attributes to change and select new values for the selected product attributes. An example of one such implementation is shown in FIGS. [0124] 9A-9B and 10. FIGS. 9A-9B are screenshots of a user interface 900 for allowing a user to specify the portion of a selected image that will be visible in an image-based product. This operation is commonly referred to as “cropping” an image. Typically, a user crops an image by selecting a portion of the image (referred to here as the “selected” portion) that will be visible in the image-based product. Thus, an image-based product can be generated in which only the selected portion of the image is incorporated (or otherwise made visible); the rest of the image (referred to here as the “cropped” portion) is not included (or otherwise made visible) in such an image-based perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Generally, a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
  • To provide for interaction with a user, the invention can be implemented on a computer system having a display device such as a monitor or LCD screen for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer system. The computer system can be programmed to provide a graphical user interface through which computer programs interact with users. [0125]
  • An example of one such type of computer is shown in FIG. 19, which shows a block diagram of a [0126] computer system 1900 suitable for implementing or performing the apparatus or methods of the invention. The computer system 1900 illustrated in FIG. 19 represents a typical hardware setup for executing software that allows a user to perform tasks such as communicating with other computer users, accessing various computer resources, and viewing, creating, or otherwise manipulating electronic content—that is, any combination of text, images, movies, music or other sounds, animations, 3D virtual worlds, and links to other objects. The system includes various input/output (I/O) devices (mouse 1903, keyboard 1905, and display 1907) and a general purpose computer 1902 having a central processor unit (CPU) 1921, an I/O unit 1917 and a memory 1909 that stores data and various programs such as an operating system 1911, and one or more application programs 1913. The computer system 1900 also typically includes some sort of communications card or device 1923 (e.g., a modem or network adapter) for exchanging data with a network 1927 via a communications link 1925 (e.g., a telephone line).
  • A number of implementations of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. For example, the operations of the processes and methods described here can be performed in a different order and still achieve desirable results. Also, the processes, methods, and systems described here can be used to change a variety of product attributes. Accordingly, other implementations are within the scope of the following claims. [0127]

Claims (111)

What is claimed is:
1. A method comprising:
automatically identifying an attribute of a first image;
automatically selecting a new value, for a product attribute of an image-based product incorporating at least a portion of the first image, based on the image attribute; and
receiving an order for the image-based product.
2. The method of claim 1, further comprising:
generating a first preview image of the image-based product.
3. The method of claim 2, further comprising:
displaying the first preview image of the image-based product.
4. The method of claim 3, wherein displaying the first preview image of the image-based product includes:
downloading the first preview image to a client computer; and
displaying the first preview image on the client computer.
5. The method of claim 1, further comprising receiving the first image.
6. The method of claim 5, wherein receiving the first image includes uploading the first image.
7. The method of claim 6, wherein the first image is uploaded from a client computer to a server.
8. The method of claim 7, wherein the first image is uploaded using a computer network.
9. The method of claim 8, wherein the computer network includes the Internet.
10. The method of claim 5, wherein receiving the first image includes storing the first image.
11. The method of claim 10, wherein the first image is stored in an image database.
12. The method of claim 5, wherein a plurality of images are received.
13. The method of claim 12, further comprising receiving a selection of the first image from the plurality of images.
14. The method of claim 13, further comprising displaying the plurality of images.
15. The method of claim 1, wherein automatically identifying the image attribute includes analyzing the first image.
16. The method of claim 15, wherein the new value for the product attribute is automatically selected based on the analysis of the first image.
17. The method of claim 16, wherein analyzing the first image includes generating a set of representative colors from the first image.
18. The method of claim 17, wherein generating the set of representative colors includes generating a color map for the first image.
19. The method of claim 18, wherein generating the color map includes performing a median cut algorithm on the first image.
20. The method of claim 16, wherein automatically selecting the new value for the product attribute includes selecting a color as a function of at least one of the representative colors.
21. The method of claim 20, wherein selecting the color as a function of at least one of the representative colors includes selecting a color that matches at least one of the representative colors.
22. The method of claim 21, wherein selecting the color that matches at least one of the representative colors includes selecting a color that complements at least one of the representative colors.
23. The method of claim 21, wherein selecting the color as a function of at least one of the representative colors includes selecting the color from the set of representative colors.
24. The method of claim 23, wherein selecting the color from the set of representative colors includes selecting the most popular color.
25. The method of claim 23, wherein selecting the color from the set of representative colors includes selecting the color at random from the set of representative colors.
26. The method of claim 20, wherein the product attribute is a border color product attribute of the image-based product and the new value is the selected color.
27. The method of claim 26, further comprising generating a second preview image of the image-based product having a border, wherein the color of the border is the color specified by the border color product attribute.
28. The method of claim 1, wherein selecting a new value for the product attribute includes selecting the new value at random.
29. The method of claim 28, wherein the selection of the new value is constrained based on previous values of the product attribute.
30. The method of claim 1, wherein selecting a new value for the product attribute includes selecting the new value at psuedo-random.
31. The method of claim 30, wherein the selection of the new value is constrained based previous values of the product attribute.
32. The method of claim 1, wherein selecting a new value for the product attribute includes selecting the new value from a predetermined ordering of values.
33. The method of claim 1, wherein the product attribute relates to which images are incorporated in the image-based product, and the image-based product further incorporates at least a portion of a second image.
34. The method of claim 33, further comprising:
receiving a plurality of images;
automatically identifying an image attribute of each of the received images; and
automatically selecting the first and second images from the received images based on the image attributes of the received images.
35. The method of claim 34, wherein automatically identifying an image attribute of each of the received images includes determining the orientation of each of the received images.
36. The method of claim 35, wherein the first and second images are selected from a subset of the received images having a portrait orientation.
37. The method of claim 35, wherein the first and second images are selected from a subset of the received images having a landscape orientation.
38. The method of claim 34, wherein the first and second images are selected from a subset of the received images having similar image attributes.
39. The method of claim 33, wherein the image-based product is a diptych.
40. The method of claim 33, wherein the image-based product is a triptych.
41. The method of claim 1, further comprising fulfilling the order for the image-based product.
42. The method of claim 1, wherein the image-based product is an image print.
43. The method of claim 1, wherein the image-based product is a framed image print.
44. The method of claim 1, further comprising storing state information about the first image.
45. The method of claim 44, wherein the state information is updated each time a new value for the product attribute is selected.
46. The method of claim 44, wherein the state information includes information about a current state of the product attribute.
47. The method of claim 46, wherein the state information includes information about a past state of the product attribute.
48. The method of claim 47, wherein the information about the past state of the product attribute includes undo information for undoing the selection of the new value for the product attribute.
49. The method of claim 48, further comprising:
receiving an undo command; and
undoing the selection of the new value for the product attribute based on the undo information.
50. The method of claim 47, wherein the information about the past state of the product attribute includes redo information for redoing the selection of the new value for the product attribute.
51. The method of claim 50, further comprising:
receiving a redo command; and
redoing the selection of the new value for the product attribute based on the redo information.
52. A server comprising:
a web front end that connects the server to a computer network;
a print lab, in communication with the web front end, that generates an image-based product incorporating a first image;
wherein the server further includes software, tangibly stored on a computer-readable medium, comprising instructions operable to cause the server to:
receive a first image via the computer network;
automatically identify an image attribute of the first image; and
automatically select a new value, for a product attribute of an image-based product incorporating at least a portion of the first image, based on the image attribute.
53. The server of claim 52, wherein the software further comprises instructions operable to cause the server to:
generate a first preview image of the image-based product.
54. The system of claim 53, wherein the software further comprises instructions operable to cause the server to:
download the first preview image to a client computer.
55. The system of claim 54, wherein the software further comprises instructions operable to cause the server to:
display the first preview image on the client computer.
56. The system of claim 52, wherein the software further comprises instructions operable to cause the server to:
receive the first image from a client computer connected to the server using the computer network.
57. The server of claim 52, wherein the computer network includes the Internet.
58. The server of claim 52, further comprising an image database, in communication with the web front end, that stores the first image.
59. The server of claim 52, wherein the software further comprises instructions operable to cause the server to:
receive a plurality of images.
60. The server of claim 59, wherein the software further includes instructions operable to cause the server to receive a selection of the first image from the plurality of images.
61. The server of claim 60, wherein the selection is received from a client computer connected to the computer network.
62. The server of claim 59, wherein the software further includes instructions operable to cause the server to receive a selection of the first image from the plurality of images.
63. The server of claim 52, wherein the instructions operable to cause the server to automatically identify an image attribute of the first image include instructions operable to cause the server to:
analyze the first image.
64. The server of claim 63, wherein the new value for the product attribute is automatically selected based on the analysis of the first image.
65. The server of claim 63, wherein the instructions operable to cause the server to analyze the first image include instructions operable to cause the server to:
generate a set of representative colors from the first image.
66. The server of claim 65, wherein the instructions operable to cause the server to generate the set of representative colors include instructions operable to cause the server to:
generate a color map for the first image.
67. The server of claim 66, wherein the instructions operable to cause the server to generate a color map for the first image include instructions operable to cause the server to:
perform the median cut algorithm on the first image.
68. The server of claim 64, wherein the instructions operable to cause the server to automatically select a new value for a product attribute of the image-based product based on the image attribute include instructions operable to cause the server to:
select a color as a function of at least one of the representative colors.
69. The server of claim 68, wherein the instructions operable to cause the server to select a color as a function of at least one of the representative colors include instructions operable to cause the server to:
select a color that matches at least one of the representative colors.
70. The server of claim 69, wherein the instructions operable to cause the server to select the color that matches at least one of the representative colors include instructions operable to cause the server to:
selecting a color that complements at least one of the representative colors.
71. The server of claim 68, wherein the instructions operable to cause the server to select the color as a function of at least one of the representative colors include instructions operable to cause the server to:
select the color from the set of representative colors.
72. The server of claim 71, wherein the instructions operable to select the color from the set of representative colors include instructions operable to cause the server to select the most popular color.
73. The server of claim 71, wherein the instructions operable to select the color from the set of representative colors include instructions operable to cause the server to select the color at random from the set of representative colors.
74. The server of claim 68, wherein the product attribute is a border color product attribute of the image-based product and the new value is the selected color.
75. The server of claim 74, wherein the software further includes instructions operable to cause the server to generate a second preview image of the image-based product having a border, wherein the color of the border is the color specified by the border color product attribute.
76. The method of claim 52, wherein the instructions operable to cause the server to automatically select a new value for a product attribute of the image-based product based on the image attribute include instructions operable to cause the server to:
select a new value for the product attribute includes selecting the new value at random.
77. The system of claim 76, wherein the selection of the new value is constrained based on previous values of the product attribute.
78. The system of claim 52, wherein the instructions operable to cause the server to automatically select a new value for a product attribute of the image-based product based on the image attribute include instructions operable to cause the server to:
selecting a new value for the product attribute includes selecting the new value at psuedo-random.
79. The system of claim 78, wherein the selection of the new value is constrained based on previous values of the product attribute.
80. The system of claim 52, wherein the instructions operable to cause the server to automatically select a new value for a product attribute of the image-based product based on the image attribute include instructions operable to cause the server to:
select a new value for the product attribute includes selecting the new value from a predetermined ordering of values.
81. The server of claim 52, wherein the product attribute relates to which images are incorporated in the image-based product, and the image-based product incorporates at least a portion of a second image.
82. The server of claim 81, wherein the software further includes instructions operable to cause the server to:
receive a plurality of images;
automatically identify an image attribute of each of the received images; and
automatically select the first and second images from the received images based on the image attributes of the received images.
83. The server of claim 82, wherein the instructions operable to cause the server to automatically identify an image attribute of each of the received images include instructions operable to cause the server to determine the orientation of each of the plurality of images.
84. The server of claim 83, wherein the first and second images are selected from the subset of images having a portrait orientation.
85. The server of claim 83, wherein the first and second images are selected from the subset of images having a landscape orientation.
86. The server of claim 81, wherein the image-based product is a diptych.
87. The server of claim 81, wherein the image-based product is a triptych.
88. The server of claim 52, wherein the software further includes instructions operable to cause the server to receive an order for the image-based product.
89. The server of claim 88, wherein the software further includes instructions operable to cause the server to fulfill the order for the image-based product.
90. The server of claim 52, wherein the image-based product is an image print.
91. The server of claim 52, wherein the image-based product is a framed image print.
92. The server of claim 52, wherein the software further comprises instructions operable to cause the server to store state information about the first image.
93. The server of claim 92, wherein the software further comprises instructions operable to cause the server to update state information each time a new value for the product attribute is selected.
94. The server of claim 92, wherein the state information includes information about a current state of the product attribute.
95. The server of claim 92, wherein the state information includes information about a past state of the product attribute.
96. The server of claim 95, wherein the information about the past state of the product attribute includes undo information for undoing the selection of the new value for the product attribute.
97. The server of claim 96, wherein the software further comprises instructions operable to cause the server to:
receive an undo command; and
undo the selection of the new value for the product attribute based on the undo information.
98. The server of claim 95, wherein the information about the past state of the product attribute includes redo information for redoing the selection of the new value for the product attribute.
99. The server of claim 98, wherein the software further comprises instructions operable to cause the server to:
receive a redo command; and
redo the selection of the new value for the product attribute based on the redo information.
100. A method for providing a user on a client computer an interface for changing one or more product attributes of an image-based product that incorporates at least a portion of a first image, the client computer being in communication with a server and having a display and a pointing device operatively coupled to a cursor displayed on the display, the method comprising:
displaying a border width control that, when actuated, supplies a new border size value to the server so that the server can change a border product attribute of the image-based product to the new border size value; and
displaying a preview image of the image-based product.
101. The method of claim 100, wherein the border width control is a button associated with a minimum border size.
102. The method of claim 100, wherein the border width control is part of web page that is downloaded by a browser executing on the client computer.
103. The method of claim 100, further comprising:
displaying a print size control that, when actuated, supplies a new print size value to the server so that the server can change a print size product attribute of the image-based product to the new print size value.
104. The method of claim 103, wherein the print size control is a selection box having a plurality of print size selections a user can select.
105. The method of claim 103, wherein the print size control is part of web page that is downloaded by a browser executing on the client computer.
106. A method for providing a user on a client computer an interface for changing one or more product attributes of an image-based product that incorporates at least a portion of a first image, the client computer being in communication with a server and having a display and a pointing device operatively coupled to a cursor displayed on the display, the method comprising:
displaying an image selection control that, when actuated, supplies an image selection to the server, the image selection identifying an image;
displaying a text entry control that, when actuated, supplies text to the server; and
displaying a text position selection control including a plurality of versions of the image, each version of the image including at a least a portion of the text located in a different text position on the image, wherein the text position selection control, when actuated, supplies a text position selection to the server, the text position selection corresponding to one of the text positions.
107. The method of claim 106, wherein the image selection control is part of web page that is downloaded by a browser executing on the client computer and includes a plurality of thumbnail images, wherein the user can actuate the image selection control by clicking on a thumbnail image.
108. The method of claim 106, wherein the text entry control is a text entry field in which a user can enter text.
109. The method of claim 106, wherein the text entry control is part of a web page that is downloaded by a browser executing on the client computer.
110. The method of claim 106, wherein the text position selection control is part of a web page that is downloaded by a browser executing on the client computer.
111. The method of claim 106, wherein a user can actuate the text position selection control by clicking on one of the versions of the image.
US10/287,303 2000-04-28 2002-11-03 System and method of changing attributes of an image-based product Expired - Lifetime US6941276B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/287,303 US6941276B2 (en) 2000-04-28 2002-11-03 System and method of changing attributes of an image-based product

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/560,222 US7016869B1 (en) 2000-04-28 2000-04-28 System and method of changing attributes of an image-based product
US10/287,303 US6941276B2 (en) 2000-04-28 2002-11-03 System and method of changing attributes of an image-based product

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/560,222 Division US7016869B1 (en) 2000-04-28 2000-04-28 System and method of changing attributes of an image-based product

Publications (2)

Publication Number Publication Date
US20030065590A1 true US20030065590A1 (en) 2003-04-03
US6941276B2 US6941276B2 (en) 2005-09-06

Family

ID=24236870

Family Applications (3)

Application Number Title Priority Date Filing Date
US09/560,222 Expired - Fee Related US7016869B1 (en) 2000-04-28 2000-04-28 System and method of changing attributes of an image-based product
US10/287,303 Expired - Lifetime US6941276B2 (en) 2000-04-28 2002-11-03 System and method of changing attributes of an image-based product
US11/351,715 Expired - Fee Related US7395229B2 (en) 2000-04-28 2006-02-10 System and method of changing attributes an image-based product

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/560,222 Expired - Fee Related US7016869B1 (en) 2000-04-28 2000-04-28 System and method of changing attributes of an image-based product

Family Applications After (1)

Application Number Title Priority Date Filing Date
US11/351,715 Expired - Fee Related US7395229B2 (en) 2000-04-28 2006-02-10 System and method of changing attributes an image-based product

Country Status (1)

Country Link
US (3) US7016869B1 (en)

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020059098A1 (en) * 2000-11-16 2002-05-16 Shinichi Sazawa Method for managing an imaginary store, method for using the imaginary store, and recording medium in which an imaginary store managing program is stored
US20020194093A1 (en) * 2001-05-31 2002-12-19 Terry Chow Customer-specific merchandising program
US20040125133A1 (en) * 2002-12-30 2004-07-01 The Board Of Trustees Of The Leland Stanford Junior University Methods and apparatus for interactive network sharing of digital video content
US20040135887A1 (en) * 2003-01-09 2004-07-15 Tecu Kirk S. Manipulating digital images based on a user profile
EP1571588A1 (en) * 2004-03-05 2005-09-07 Brother Kogyo Kabushiki Kaisha Print data editing apparatus and method
US20050195216A1 (en) * 2004-03-03 2005-09-08 Gary Kramer System for delivering and enabling interactivity with images
WO2005124532A1 (en) * 2004-06-18 2005-12-29 Research In Motion Limited User interface generation with parametric image division
US20060139372A1 (en) * 2004-12-28 2006-06-29 The Mathworks, Inc. Providing graphic generating capabilities for a model based development process
WO2006127139A2 (en) * 2005-05-20 2006-11-30 Microsoft Corporation Matrix slicing
US20060271443A1 (en) * 2005-05-27 2006-11-30 Cahalane Daniel J System and method for automatically generating and/or processing a photomask order using a script profiler
US20070160360A1 (en) * 2005-12-15 2007-07-12 Mediapod Llc System and Apparatus for Increasing Quality and Efficiency of Film Capture and Methods of Use Thereof
US20070234232A1 (en) * 2006-03-29 2007-10-04 Gheorghe Adrian Citu Dynamic image display
US20070268202A1 (en) * 2006-05-22 2007-11-22 Lg Electronics Inc. Mobile terminal and method of controlling a display device
US20070294306A1 (en) * 2004-12-13 2007-12-20 Toutonghi Michael J Automatic publishing of digital content
US20080134027A1 (en) * 2006-12-05 2008-06-05 Iwao Saeki Image processing apparatus, image forming apparatus, and computer program product
US20080268899A1 (en) * 2007-04-24 2008-10-30 Lg Electronics Inc. Video communication terminal and method of displaying images
US20080306749A1 (en) * 2007-06-05 2008-12-11 Fredlund John R System and method for presenting image bearing products for sale
US20090003731A1 (en) * 2006-06-30 2009-01-01 Sharp Kabushiki Kaisha Image data providing apparatus, image display apparatus, image display system, method for controlling image data providing apparatus, method for controlling image display apparatus, control program, and recording medium
US20090016648A1 (en) * 2007-07-12 2009-01-15 Ricoh Company, Limited Apparatus, method, and computer program product for processing image
US20090112735A1 (en) * 2007-10-25 2009-04-30 Robert Viehmann Content service marketplace solutions
US20090319376A1 (en) * 2008-06-23 2009-12-24 Vistaprint Technologies Limited Automated method and system for creation of montage of matching products
US20110055045A1 (en) * 2009-09-02 2011-03-03 Caine Smith Method and system of displaying, managing and selling images in an event photography environment
US20110099471A1 (en) * 2009-10-28 2011-04-28 Phil Manijak Product preview in a product selection and management workflow
US20110185297A1 (en) * 2010-01-26 2011-07-28 Apple Inc. Image mask interface
WO2013142402A1 (en) * 2012-03-21 2013-09-26 Sandisk Technologies Inc. Graphical manipulation of digital images
US20140267363A1 (en) * 2013-03-15 2014-09-18 Apple Inc. Device, Method, and Graphical User Interface for Adjusting the Appearance of a Control
US20140285503A1 (en) * 2013-03-22 2014-09-25 Fujifilm Corporation Image display method, apparatus, and program
US20150049031A1 (en) * 2013-08-19 2015-02-19 Wacom Co., Ltd. Drawing device
US9087413B2 (en) 2004-03-03 2015-07-21 Engram Networking Llc System for delivering and enabling interactivity with images
US20160124691A1 (en) * 2014-10-31 2016-05-05 Seiko Epson Corporation Image display control device, print result pre-display method, and print result pre-display program
US20160295030A1 (en) * 2015-03-31 2016-10-06 Kyocera Document Solutions Inc. Image forming apparatus and non-transitory computer-readable storage medium storing image forming program
US9542907B2 (en) 2013-06-09 2017-01-10 Apple Inc. Content adjustment in graphical user interface based on background content
US20170255793A1 (en) * 2016-03-01 2017-09-07 Mx Technologies, Inc. Item level data aggregation
EP3462383A1 (en) * 2011-08-31 2019-04-03 Zazzle Inc. A data processing system and method for processing an image of an object
US10339587B2 (en) * 2015-07-31 2019-07-02 Fujifilm Corporation Method, medium, and system for creating a product by applying images to materials
EP3678054A1 (en) * 2011-08-31 2020-07-08 Zazzle Inc. Product options framework and accessories
US10963939B1 (en) * 2018-08-27 2021-03-30 A9.Com, Inc. Computer vision based style profiles

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020126135A1 (en) * 1998-10-19 2002-09-12 Keith Ball Image sharing for instant messaging
US7339595B2 (en) 1998-10-19 2008-03-04 Lightsurf Technologies, Inc. Method and system for improved internet color
AU2001275082A1 (en) * 2000-06-02 2001-12-17 Iprint.Com, Inc. Integrated electronic shopping cart system and method
US7620622B1 (en) * 2001-03-08 2009-11-17 Yahoo! Inc. Method and system for indexing information and providing results for a search including objects having predetermined attributes
US7216289B2 (en) * 2001-03-16 2007-05-08 Microsoft Corporation Method and apparatus for synchronizing multiple versions of digital data
JP2002297745A (en) * 2001-03-29 2002-10-11 Fuji Photo Film Co Ltd Method, system and program for ordering print in composited print service
JP2003173448A (en) * 2001-12-05 2003-06-20 Copyer Co Ltd Information processing method, device and system
US20030146997A1 (en) 2002-02-01 2003-08-07 Eastman Kodak Company System and method of processing a digital image for user assessment of an output image product
JP4143314B2 (en) * 2002-03-15 2008-09-03 キヤノン株式会社 Image processing method, apparatus for realizing the same, and printer driver
DE10221178A1 (en) * 2002-05-13 2003-12-04 Siemens Ag Process for generating pages in a markup language for the selection of products and software tool
US20040023686A1 (en) * 2002-07-31 2004-02-05 Lavaflow, Llp Method of and apparatus for outputting a picture file
US7408660B1 (en) 2002-08-08 2008-08-05 Sprint Spectrum L.P. Method and system for managing delivery of digital image files to image processing labs
ATE542366T1 (en) * 2002-12-10 2012-02-15 Sony Ericsson Mobile Comm Ab EFFECTS GENERATION FOR IMAGES
US8269793B2 (en) * 2003-02-18 2012-09-18 Serverside Group Limited Apparatus and method for manipulating images
JP2005012764A (en) * 2003-05-22 2005-01-13 Casio Comput Co Ltd Data communication apparatus, image transmitting method, and image transmitting program
US20050055636A1 (en) * 2003-07-21 2005-03-10 Roger Graves Dynamic editing of multimedia content for real-time applications
US7316567B2 (en) * 2003-08-01 2008-01-08 Jennifer Chia-Jen Hsieh Physical programming toy
JP2005078362A (en) * 2003-08-29 2005-03-24 Konica Minolta Photo Imaging Inc Image creation service system
US20050102624A1 (en) * 2003-11-10 2005-05-12 Eastman Kodak Company Method of creating a customized image product
GB0407042D0 (en) * 2004-02-17 2004-04-28 Serverside Graphics Ltd Secure production facility
WO2006018636A2 (en) * 2004-08-17 2006-02-23 Serverside Group Limited A card design system
US8872843B2 (en) * 2004-07-02 2014-10-28 Samsung Electronics Co., Ltd. Method for editing images in a mobile terminal
US7375768B2 (en) * 2004-08-24 2008-05-20 Magix Ag System and method for automatic creation of device specific high definition material
US7525578B1 (en) 2004-08-26 2009-04-28 Sprint Spectrum L.P. Dual-location tagging of digital image files
US7196718B1 (en) 2004-08-26 2007-03-27 Sprint Spectrum L.P. Method and apparatus for transmission of digital image to destination associated with voice call participant
US7424310B1 (en) 2004-08-26 2008-09-09 Sprint Spectrum L.P. System, method, and apparatus for automatic transmission of recently captured images
US7424282B2 (en) * 2004-08-26 2008-09-09 Sprint Spectrum L.P. Method and system for delivering photos to called destinations
US20070033568A1 (en) * 2005-07-30 2007-02-08 Barrieau Shawn M System and method for managing product customization
US7792389B2 (en) * 2005-08-10 2010-09-07 Seiko Epson Corporation Image processing content determining apparatus, computer readable medium storing thereon image processing content determining program and image processing content determining method
JP4652978B2 (en) * 2005-08-12 2011-03-16 キヤノン株式会社 Image editing apparatus, control method therefor, and computer program
JP2007072534A (en) * 2005-09-02 2007-03-22 Star Micronics Co Ltd Print system, control method of print system and program
CN1928806A (en) * 2005-09-09 2007-03-14 鸿富锦精密工业(深圳)有限公司 Two-desktop remote control systems and method
US7697040B2 (en) * 2005-10-31 2010-04-13 Lightbox Network, Inc. Method for digital photo management and distribution
GB0605390D0 (en) * 2006-03-16 2006-04-26 Serverside Group Ltd Image design system
US7447998B2 (en) * 2006-05-04 2008-11-04 International Business Machines Corporation Graphical interface for tree view
US20070291105A1 (en) * 2006-06-16 2007-12-20 Cpi Corp Methods of remotely presenting and selling visual media to a person during an oral communication session with such person
US8527354B2 (en) * 2006-08-08 2013-09-03 Serverside Group Limited Affinity group
US7305182B1 (en) * 2006-08-15 2007-12-04 My Photo Paradise, Llc Process for providing event photographs of an event for inspection selection and distribution
US7703038B1 (en) * 2006-09-26 2010-04-20 Adobe Systems Inc. Methods and apparatus for creating a quick canvas
US20080091459A1 (en) * 2006-10-17 2008-04-17 Serverside Group Limited Transaction card design management system
US10127480B1 (en) 2007-03-09 2018-11-13 R. B. III Associates, Inc. System for automated decoration
US20080260264A1 (en) * 2007-04-18 2008-10-23 Kohei Miura Method and system for generating aesthetic characters, and business model of the same
WO2008128719A1 (en) * 2007-04-20 2008-10-30 Hiflex Software Gesmbh Ordering system for printed products and method for ordering a printed product
WO2008150471A2 (en) * 2007-05-31 2008-12-11 Visan Industries Systems and methods for rendering media
US8009313B2 (en) * 2008-01-10 2011-08-30 Jeremy Noonan Online image customization and printing on merchandise
TWI349403B (en) * 2008-04-09 2011-09-21 Asustek Comp Inc Rotatable bearing base
JP4631925B2 (en) * 2008-04-17 2011-02-16 コニカミノルタビジネステクノロジーズ株式会社 Image processing apparatus, image processing method, and image processing program
DE102008047431A1 (en) * 2008-09-15 2010-03-25 Myprinting Gmbh Computer system for processing image files in remote-data servers in e.g. internet, has data server connected with client computer and printer-server by secured Internet protocol data connections to transfer image files
JP5400342B2 (en) * 2008-10-01 2014-01-29 キヤノン株式会社 Information processing apparatus, display method thereof, and program
US9715701B2 (en) * 2008-11-24 2017-07-25 Ebay Inc. Image-based listing using image of multiple items
US20110099523A1 (en) * 2009-10-28 2011-04-28 Van Zee Pieter Product selection and management workflow
WO2011097405A1 (en) * 2010-02-03 2011-08-11 Nik Software, Inc. Narrative-based media organizing system for converting digital media into personal story
US20110280476A1 (en) * 2010-05-13 2011-11-17 Kelly Berger System and method for automatically laying out photos and coloring design elements within a photo story
US20120109782A1 (en) * 2010-10-28 2012-05-03 Mahoney Kathleen A Imaging product selection method
US10127697B2 (en) * 2010-10-28 2018-11-13 Kodak Alaris Inc. Imaging product selection system
US20120278198A1 (en) * 2011-04-26 2012-11-01 Ronald Steven Cok Efficient choice selection for multi-element products
AU2012249266A1 (en) 2011-04-29 2013-11-07 American Greetings Corporation Systems, methods and apparatuses for creating, editing, distributing and viewing electronic greeting cards
US20120304052A1 (en) * 2011-05-27 2012-11-29 Wesley Tanaka Systems And Methods For Displaying An Image In A Plurality Of Designs
US9026946B2 (en) * 2011-08-08 2015-05-05 Blackberry Limited Method and apparatus for displaying an image
US9032291B2 (en) * 2011-10-10 2015-05-12 Microsoft Technology Licensing, Llc Using sketch effects as part of displaying one or more electronic document objects
US9100668B2 (en) * 2012-05-31 2015-08-04 Matthew Nathan Lehrer Graphics correction engine
US9256919B2 (en) 2013-04-05 2016-02-09 Grit Design, Inc. Systems and methods for image processing using a resizing template
US9403394B2 (en) 2013-07-25 2016-08-02 The Hillman Group, Inc. Modular sublimation transfer printing apparatus
US9731534B2 (en) 2013-07-25 2017-08-15 The Hillman Group, Inc. Automated simultaneous multiple article sublimation printing process and apparatus
US9292175B2 (en) 2013-11-08 2016-03-22 Minted, Llc Vendor website GUI for marketing greeting cards
JP6314597B2 (en) * 2014-03-28 2018-04-25 ブラザー工業株式会社 Information processing program and information processing apparatus
US9984525B2 (en) 2014-04-24 2018-05-29 The Hillman Group, Inc. Automated vending inventory management apparatuses and method
JP2016024213A (en) * 2014-07-16 2016-02-08 株式会社ミツトヨ Image measuring device, and gui program for image measuring device
US9962979B2 (en) 2015-08-05 2018-05-08 The Hillman Group, Inc. Semi-automated sublimation printing apparatus
US11030574B1 (en) 2018-08-29 2021-06-08 Blue Yonder Group, Inc. System and method for retail planning with smart product attributes
WO2020066291A1 (en) * 2018-09-25 2020-04-02 富士フイルム株式会社 Image processing device, image processing method, and image processing program
US10692124B1 (en) * 2018-12-07 2020-06-23 Decopac, Inc. Systems and methods for ordering and preparation of customized comestibles

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666215A (en) * 1994-02-25 1997-09-09 Eastman Kodak Company System and method for remotely selecting photographic images
US5913088A (en) * 1996-09-06 1999-06-15 Eastman Kodak Company Photographic system capable of creating and utilizing applets on photographic film
US6018774A (en) * 1997-07-03 2000-01-25 Yobaby Productions, Llc Method and system for creating messages including image information
US6085126A (en) * 1997-11-21 2000-07-04 St. Paul Stamp Works, Inc. System and method for preparing custom designs for multiple types of imprintable media
US6195101B1 (en) * 1998-04-06 2001-02-27 Mgi Software Corporation Method and system for image templates
US6281874B1 (en) * 1998-08-27 2001-08-28 International Business Machines Corporation Method and system for downloading graphic images on the internet
US6301586B1 (en) * 1997-10-06 2001-10-09 Canon Kabushiki Kaisha System for managing multimedia objects
US6324545B1 (en) * 1997-10-15 2001-11-27 Colordesk Ltd. Personalized photo album
US6401085B1 (en) * 1999-03-05 2002-06-04 Accenture Llp Mobile communication and computing system and method
US20020067500A1 (en) * 1997-05-12 2002-06-06 Yoshikazu Yokomizo Method of and system for editing images
US6412008B1 (en) * 1999-01-28 2002-06-25 International Business Machines Corporation System and method for cooperative client/server customization of web pages
US6441921B1 (en) * 1997-10-28 2002-08-27 Eastman Kodak Company System and method for imprinting and reading a sound message on a greeting card
US6535294B1 (en) * 1998-06-23 2003-03-18 Discount Labels, Inc. System and method for preparing customized printed products over a communications network
US6583799B1 (en) * 1999-11-24 2003-06-24 Shutterfly, Inc. Image uploading
US6587596B1 (en) * 2000-04-28 2003-07-01 Shutterfly, Inc. System and method of cropping an image
US6657702B1 (en) * 1999-08-31 2003-12-02 Shutterfly, Inc. Facilitating photographic print re-ordering
US6720985B1 (en) * 1999-09-17 2004-04-13 Silverbrook Research Pty Ltd Method and system for object selection

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8904535D0 (en) * 1989-02-28 1989-04-12 Barcrest Ltd Automatic picture taking machine
US5594467A (en) * 1989-12-06 1997-01-14 Video Logic Ltd. Computer based display system allowing mixing and windowing of graphics and video
US5140348A (en) * 1990-09-28 1992-08-18 Eastman Kodak Company Color image production apparatus with border color selection
US5365252A (en) * 1991-09-23 1994-11-15 Ricoh Company, Ltd. Color quantization apparatus and method for frame buffer display
DE69401435T2 (en) 1994-09-13 1997-06-26 Agfa Gevaert Nv Changing data fields in a page description language
US5649032A (en) * 1994-11-14 1997-07-15 David Sarnoff Research Center, Inc. System for automatically aligning images to form a mosaic image
US6069637A (en) * 1996-07-29 2000-05-30 Eastman Kodak Company System for custom imprinting a variety of articles with images obtained from a variety of different sources
JP3947251B2 (en) * 1996-09-04 2007-07-18 富士フイルム株式会社 Digital print ordering and delivery system and reception processing device
US6017157A (en) 1996-12-24 2000-01-25 Picturevision, Inc. Method of processing digital images and distributing visual prints produced from the digital images
DE69832544T2 (en) 1997-02-19 2006-08-10 Canon K.K. Arrangement and method for image processing and medium with programs stored on it
US6532039B2 (en) * 1997-09-17 2003-03-11 Flashpoint Technology, Inc. Method and system for digital image stamping
JP4144935B2 (en) 1998-06-08 2008-09-03 ノーリツ鋼機株式会社 Reception method and reception apparatus for creating a photograph with sound
US6288719B1 (en) 1998-10-26 2001-09-11 Eastman Kodak Company System and method of constructing a photo album
US6388732B1 (en) 1998-07-31 2002-05-14 Burrell Professional Labs, Inc. Method and apparatus for producing digital photographic prints
US6362900B1 (en) 1998-12-30 2002-03-26 Eastman Kodak Company System and method of constructing a photo album
US6721802B1 (en) 1999-08-12 2004-04-13 Point2 Technologies Inc. Method, apparatus and program for the central storage of standardized image data
US6667814B1 (en) 1999-09-15 2003-12-23 Lexmark International, Inc. Automatic up image printing
US6507824B1 (en) * 1999-11-30 2003-01-14 General Electric Company Method and system for selecting product colors
US6938004B1 (en) * 2000-03-23 2005-08-30 Eastman Kodak Company Method of providing photofinishing credit

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666215A (en) * 1994-02-25 1997-09-09 Eastman Kodak Company System and method for remotely selecting photographic images
US5913088A (en) * 1996-09-06 1999-06-15 Eastman Kodak Company Photographic system capable of creating and utilizing applets on photographic film
US20020067500A1 (en) * 1997-05-12 2002-06-06 Yoshikazu Yokomizo Method of and system for editing images
US6522418B2 (en) * 1997-05-12 2003-02-18 Canon Kabushiki Kaisha Method of and system for editing images
US6018774A (en) * 1997-07-03 2000-01-25 Yobaby Productions, Llc Method and system for creating messages including image information
US6301586B1 (en) * 1997-10-06 2001-10-09 Canon Kabushiki Kaisha System for managing multimedia objects
US6324545B1 (en) * 1997-10-15 2001-11-27 Colordesk Ltd. Personalized photo album
US6441921B1 (en) * 1997-10-28 2002-08-27 Eastman Kodak Company System and method for imprinting and reading a sound message on a greeting card
US6085126A (en) * 1997-11-21 2000-07-04 St. Paul Stamp Works, Inc. System and method for preparing custom designs for multiple types of imprintable media
US6195101B1 (en) * 1998-04-06 2001-02-27 Mgi Software Corporation Method and system for image templates
US6535294B1 (en) * 1998-06-23 2003-03-18 Discount Labels, Inc. System and method for preparing customized printed products over a communications network
US6281874B1 (en) * 1998-08-27 2001-08-28 International Business Machines Corporation Method and system for downloading graphic images on the internet
US6412008B1 (en) * 1999-01-28 2002-06-25 International Business Machines Corporation System and method for cooperative client/server customization of web pages
US6401085B1 (en) * 1999-03-05 2002-06-04 Accenture Llp Mobile communication and computing system and method
US6657702B1 (en) * 1999-08-31 2003-12-02 Shutterfly, Inc. Facilitating photographic print re-ordering
US6720985B1 (en) * 1999-09-17 2004-04-13 Silverbrook Research Pty Ltd Method and system for object selection
US6583799B1 (en) * 1999-11-24 2003-06-24 Shutterfly, Inc. Image uploading
US6587596B1 (en) * 2000-04-28 2003-07-01 Shutterfly, Inc. System and method of cropping an image

Cited By (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020059098A1 (en) * 2000-11-16 2002-05-16 Shinichi Sazawa Method for managing an imaginary store, method for using the imaginary store, and recording medium in which an imaginary store managing program is stored
US20060206396A1 (en) * 2001-05-31 2006-09-14 Mars Incorporated Customer-specific merchandising program
US20020194093A1 (en) * 2001-05-31 2002-12-19 Terry Chow Customer-specific merchandising program
US20100036714A1 (en) * 2001-05-31 2010-02-11 Mars, Incorporated Customer-specific merchandising program
US7596517B2 (en) 2001-05-31 2009-09-29 Mars, Incorporated Customer-specific merchandising program
US8036954B2 (en) 2001-05-31 2011-10-11 Mars, Incorporated Customer-specific merchandising program
US8533065B2 (en) 2001-05-31 2013-09-10 Mars, Incorporated Customer-specific merchandising program
US7092903B2 (en) * 2001-05-31 2006-08-15 Mars, Incorporated Customer-specific merchandising program
US20040125133A1 (en) * 2002-12-30 2004-07-01 The Board Of Trustees Of The Leland Stanford Junior University Methods and apparatus for interactive network sharing of digital video content
US8307273B2 (en) * 2002-12-30 2012-11-06 The Board Of Trustees Of The Leland Stanford Junior University Methods and apparatus for interactive network sharing of digital video content
US20040135887A1 (en) * 2003-01-09 2004-07-15 Tecu Kirk S. Manipulating digital images based on a user profile
US7224383B2 (en) * 2003-01-09 2007-05-29 Hewlett-Packard Development Company, L.P. Manipulating digital images based on a user profile
US20050195216A1 (en) * 2004-03-03 2005-09-08 Gary Kramer System for delivering and enabling interactivity with images
US9087413B2 (en) 2004-03-03 2015-07-21 Engram Networking Llc System for delivering and enabling interactivity with images
US7262783B2 (en) * 2004-03-03 2007-08-28 Virtual Iris Studios, Inc. System for delivering and enabling interactivity with images
EP1571588A1 (en) * 2004-03-05 2005-09-07 Brother Kogyo Kabushiki Kaisha Print data editing apparatus and method
US20050195436A1 (en) * 2004-03-05 2005-09-08 Brother Kogyo Kabushiki Kaisha Print data editing apparatus and print data editing program
US8040322B2 (en) 2004-06-18 2011-10-18 Research In Motion Limited System and method for user interface generation
US20060001678A1 (en) * 2004-06-18 2006-01-05 Klassen Gerhard D System and method for user interface generation
WO2005124532A1 (en) * 2004-06-18 2005-12-29 Research In Motion Limited User interface generation with parametric image division
US7764277B2 (en) 2004-06-18 2010-07-27 Research In Motion Limited System and method for user interface generation
US20110066969A1 (en) * 2004-06-18 2011-03-17 Research In Motion Limited System and method for user interface generation
US7945535B2 (en) * 2004-12-13 2011-05-17 Microsoft Corporation Automatic publishing of digital content
US20070294306A1 (en) * 2004-12-13 2007-12-20 Toutonghi Michael J Automatic publishing of digital content
US7834876B2 (en) * 2004-12-28 2010-11-16 The Mathworks, Inc. Providing graphic generating capabilities for a model based development process
WO2006071462A1 (en) * 2004-12-28 2006-07-06 The Mathworks, Inc. Providing graphic generating capabilities for a model based development process
US20060139372A1 (en) * 2004-12-28 2006-06-29 The Mathworks, Inc. Providing graphic generating capabilities for a model based development process
WO2006127139A2 (en) * 2005-05-20 2006-11-30 Microsoft Corporation Matrix slicing
WO2006127139A3 (en) * 2005-05-20 2008-10-16 Microsoft Corp Matrix slicing
WO2006130136A1 (en) * 2005-05-27 2006-12-07 Photronics, Inc. System and method for automatically generating and/or processing a photomask order using a script profiler
US20060271443A1 (en) * 2005-05-27 2006-11-30 Cahalane Daniel J System and method for automatically generating and/or processing a photomask order using a script profiler
US9167154B2 (en) 2005-06-21 2015-10-20 Cedar Crest Partners Inc. System and apparatus for increasing quality and efficiency of film capture and methods of use thereof
US8767080B2 (en) * 2005-08-25 2014-07-01 Cedar Crest Partners Inc. System and apparatus for increasing quality and efficiency of film capture and methods of use thereof
US20090195664A1 (en) * 2005-08-25 2009-08-06 Mediapod Llc System and apparatus for increasing quality and efficiency of film capture and methods of use thereof
US20070160360A1 (en) * 2005-12-15 2007-07-12 Mediapod Llc System and Apparatus for Increasing Quality and Efficiency of Film Capture and Methods of Use Thereof
US8319884B2 (en) 2005-12-15 2012-11-27 Mediapod Llc System and apparatus for increasing quality and efficiency of film capture and methods of use thereof
US20070234232A1 (en) * 2006-03-29 2007-10-04 Gheorghe Adrian Citu Dynamic image display
EP1860488A3 (en) * 2006-05-22 2008-11-05 LG Electronics Inc. Mobile display device with selectable means for modifying an image
EP1860488A2 (en) * 2006-05-22 2007-11-28 LG Electronics Inc. Mobile display device with selectable means for modifying an image
US8350874B2 (en) 2006-05-22 2013-01-08 Lg Electronics Inc. Mobile terminal and method of controlling a display device
US20070268202A1 (en) * 2006-05-22 2007-11-22 Lg Electronics Inc. Mobile terminal and method of controlling a display device
EP2043086A4 (en) * 2006-06-30 2009-12-02 Sharp Kk Image data providing device, image display device, image display system, control method for image data providing device, control method for image display device, control program and recording medium
US20090003731A1 (en) * 2006-06-30 2009-01-01 Sharp Kabushiki Kaisha Image data providing apparatus, image display apparatus, image display system, method for controlling image data providing apparatus, method for controlling image display apparatus, control program, and recording medium
EP2043086A1 (en) * 2006-06-30 2009-04-01 Sharp Kabushiki Kaisha Image data providing device, image display device, image display system, control method for image data providing device, control method for image display device, control program and recording medium
US20080134027A1 (en) * 2006-12-05 2008-06-05 Iwao Saeki Image processing apparatus, image forming apparatus, and computer program product
US8086961B2 (en) * 2006-12-05 2011-12-27 Ricoh Company, Ltd. Image processing apparatus, image forming apparatus, and computer program product
US20080268899A1 (en) * 2007-04-24 2008-10-30 Lg Electronics Inc. Video communication terminal and method of displaying images
US9258520B2 (en) 2007-04-24 2016-02-09 Lg Electronics Inc. Video communication terminal and method of displaying images
US8489149B2 (en) * 2007-04-24 2013-07-16 Lg Electronics Inc. Video communication terminal and method of displaying images
US8756114B2 (en) * 2007-06-05 2014-06-17 Intellectual Ventures Fund 83 Llc Method, medium, and system for generating offers for image bearing products
US20080306749A1 (en) * 2007-06-05 2008-12-11 Fredlund John R System and method for presenting image bearing products for sale
US8244039B2 (en) * 2007-07-12 2012-08-14 Ricoh Company, Limited Apparatus, method, and computer program product for acquiring processing content for image data
US20090016648A1 (en) * 2007-07-12 2009-01-15 Ricoh Company, Limited Apparatus, method, and computer program product for processing image
US20090112735A1 (en) * 2007-10-25 2009-04-30 Robert Viehmann Content service marketplace solutions
US20110099093A1 (en) * 2008-06-23 2011-04-28 Vistaprint Technologies Limited Automated method and system for creation of montage of matching products
US7885861B2 (en) * 2008-06-23 2011-02-08 Vistaprint Technologies Limited Method, system, and storage for creating a montage of composite product images
US20090319376A1 (en) * 2008-06-23 2009-12-24 Vistaprint Technologies Limited Automated method and system for creation of montage of matching products
US8775271B2 (en) * 2008-06-23 2014-07-08 Vistaprint Schweiz Gmbh Method, medium, and system for automated creation of montage of matching products
US8332281B2 (en) * 2009-09-02 2012-12-11 Image Holdings Method of displaying, managing and selling images in an event photography environment
US20110055045A1 (en) * 2009-09-02 2011-03-03 Caine Smith Method and system of displaying, managing and selling images in an event photography environment
US20110099471A1 (en) * 2009-10-28 2011-04-28 Phil Manijak Product preview in a product selection and management workflow
US20110185297A1 (en) * 2010-01-26 2011-07-28 Apple Inc. Image mask interface
US8209632B2 (en) * 2010-01-26 2012-06-26 Apple Inc. Image mask interface
EP3678054A1 (en) * 2011-08-31 2020-07-08 Zazzle Inc. Product options framework and accessories
EP4040367A1 (en) * 2011-08-31 2022-08-10 Zazzle Inc. Visualizing a custom product in situ
EP3462383A1 (en) * 2011-08-31 2019-04-03 Zazzle Inc. A data processing system and method for processing an image of an object
WO2013142402A1 (en) * 2012-03-21 2013-09-26 Sandisk Technologies Inc. Graphical manipulation of digital images
US10175871B2 (en) * 2013-03-15 2019-01-08 Apple Inc. Device, method, and graphical user interface for adjusting the appearance of a control
US20140267363A1 (en) * 2013-03-15 2014-09-18 Apple Inc. Device, Method, and Graphical User Interface for Adjusting the Appearance of a Control
US9305374B2 (en) * 2013-03-15 2016-04-05 Apple Inc. Device, method, and graphical user interface for adjusting the appearance of a control
US9355472B2 (en) 2013-03-15 2016-05-31 Apple Inc. Device, method, and graphical user interface for adjusting the appearance of a control
US20160291858A1 (en) * 2013-03-15 2016-10-06 Apple Inc. Device, Method, and Graphical User Interface for Adjusting the Appearance of a Control
US10599316B2 (en) 2013-03-15 2020-03-24 Apple Inc. Systems and methods for adjusting appearance of a control based on detected changes in underlying content
US20140285503A1 (en) * 2013-03-22 2014-09-25 Fujifilm Corporation Image display method, apparatus, and program
US9542907B2 (en) 2013-06-09 2017-01-10 Apple Inc. Content adjustment in graphical user interface based on background content
US20150049031A1 (en) * 2013-08-19 2015-02-19 Wacom Co., Ltd. Drawing device
US9886103B2 (en) * 2013-08-19 2018-02-06 Wacom Co., Ltd. Battery driven mobile drawing device, including electromagnetic induction and capacitive position detectors and a control circuit for causing a parameter setting area to be displayed, and a test drawing area to be displayed transparently, superimposed, on a portion of a drawing in an image display area of a display, for rendering a drawing using an electronic pen
US9665326B2 (en) * 2014-10-31 2017-05-30 Seiko Epson Corporation Image display control device for displaying a print preview for borderless printing
US20160124691A1 (en) * 2014-10-31 2016-05-05 Seiko Epson Corporation Image display control device, print result pre-display method, and print result pre-display program
US9794434B2 (en) * 2015-03-31 2017-10-17 Kyocera Document Solutions Inc. Image forming apparatus including a preview display unit and non-transitory computer-readable storage medium storing image forming program
US20160295030A1 (en) * 2015-03-31 2016-10-06 Kyocera Document Solutions Inc. Image forming apparatus and non-transitory computer-readable storage medium storing image forming program
US10339587B2 (en) * 2015-07-31 2019-07-02 Fujifilm Corporation Method, medium, and system for creating a product by applying images to materials
US20170255793A1 (en) * 2016-03-01 2017-09-07 Mx Technologies, Inc. Item level data aggregation
US10776838B2 (en) * 2016-03-01 2020-09-15 Mx Technologies, Inc. Item level data aggregation
US11138643B2 (en) * 2016-03-01 2021-10-05 Mx Technologies, Inc. Item level data aggregation
US11810167B2 (en) 2016-03-01 2023-11-07 Mx Technologies, Inc. Item level data aggregation
US10963939B1 (en) * 2018-08-27 2021-03-30 A9.Com, Inc. Computer vision based style profiles

Also Published As

Publication number Publication date
US7016869B1 (en) 2006-03-21
US7395229B2 (en) 2008-07-01
US6941276B2 (en) 2005-09-06
US20060155612A1 (en) 2006-07-13

Similar Documents

Publication Publication Date Title
US7016869B1 (en) System and method of changing attributes of an image-based product
US6973222B2 (en) System and method of cropping an image
US7576752B1 (en) System and method for manipulating digital images
US7830399B2 (en) System and method for manipulating digital images
EP1124200B1 (en) Methods and apparatuses for generating composite images
US8504932B2 (en) Image collage builder
US7885861B2 (en) Method, system, and storage for creating a montage of composite product images
US6844885B2 (en) Image editing via grid elements
US8799756B2 (en) Systems and methods for generating autoflow of content based on image and user analysis as well as use case data for a media-based printable product
US7146575B2 (en) Image uploading
US20020093678A1 (en) Managing and searching digital images
US7082227B1 (en) Producing printed images having personalized features
US8418068B1 (en) System, software application, and method for customizing a high-resolution image via the internet
US20060181736A1 (en) Image collage builder
US20050210413A1 (en) Utilization of digital images
US20160027195A1 (en) System and method for automatic generation of image distributions
US20070067179A1 (en) Framed art visualization software
US20040183830A1 (en) Dynamic-template incorporation of digital images in an electronic mail message
EP2302591A1 (en) Electronic product design
US20070061365A1 (en) Event participant image locating, retrieving, editing and printing system
WO2001082587A1 (en) Computer-controlled system and method for generating a customized imprinted item
US20120179571A1 (en) System and method for producing digital image photo-specialty products
US20090015869A1 (en) Image collage builder
US20110099501A1 (en) Previewing and editing products in a product selection and management workflow
US20110099471A1 (en) Product preview in a product selection and management workflow

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT

Free format text: SECURITY AGREEMENT;ASSIGNOR:SHUTTERFLY, INC.;REEL/FRAME:020866/0406

Effective date: 20080428

FPAY Fee payment

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT

Free format text: SECURITY AGREEMENT;ASSIGNOR:SHUTTERFLY, INC.;REEL/FRAME:027333/0161

Effective date: 20111122

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT

Free format text: SECURITY AGREEMENT;ASSIGNOR:SHUTTERFLY, INC.;REEL/FRAME:039024/0761

Effective date: 20160610

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: SHUTTERFLY, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:043542/0693

Effective date: 20170817

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL

Free format text: SECURITY INTEREST;ASSIGNOR:SHUTTERFLY, INC.;REEL/FRAME:043601/0955

Effective date: 20170817

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT, MARYLAND

Free format text: SECURITY INTEREST;ASSIGNORS:SHUTTERFLY, INC.;LIFETOUCH INC.;LIFETOUCH NATIONAL SCHOOL STUDIOS INC.;REEL/FRAME:046216/0396

Effective date: 20180402

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL

Free format text: SECURITY INTEREST;ASSIGNORS:SHUTTERFLY, INC.;LIFETOUCH INC.;LIFETOUCH NATIONAL SCHOOL STUDIOS INC.;REEL/FRAME:046216/0396

Effective date: 20180402

AS Assignment

Owner name: LIFETOUCH NATIONAL SCHOOL STUDIOS INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:050527/0868

Effective date: 20190925

Owner name: SHUTTERFLY, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:050527/0868

Effective date: 20190925

Owner name: LIFETOUCH INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:050527/0868

Effective date: 20190925

AS Assignment

Owner name: SHUTTERFLY INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:050572/0508

Effective date: 20190925

Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, MINNESOTA

Free format text: FIRST LIEN SECURITY AGREEMENT;ASSIGNOR:SHUTTERFLY, INC.;REEL/FRAME:050574/0865

Effective date: 20190925

AS Assignment

Owner name: SHUTTERFLY, LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:SHUTTERFLY, INC.;REEL/FRAME:051095/0172

Effective date: 20191031