Cloud computing is location-independent computing, whereby shared servers provide resources, software, and data to computers and other devices on demand. The term “cloud” is used as a metaphor for the Internet, based on the cloud drawing often used to represent computer networks. Cloud computing describes a supplement, consumption, and delivery model for information technologies services based on the Internet, and can involves over-the-Internet provision of dynamically scalable and often virtualized resources. One key characteristic of cloud computing is that the computing is “in the cloud” e.g. the processing (and the related data) is not in a specified, known or static place(s). Details are abstracted from consumers, who no longer have need for expertise in, or control over, the technology infrastructure “in the cloud” that supports them. This is in contrast to a model in which the processing takes place in one or more specific servers that are known.
In some examples of cloud computing, one or more of the aforementioned resources can include a printer, which can be referred to as a cloud printer. In such a situation, nearly any computing device connected to the computing cloud can print to the cloud printer.
For purposes of simplification of explanation, in the present example, different components of the network system 2 are illustrated and described as performing different functions. However, one of ordinary skill in the art will understand and appreciate that the functions of the described components can be performed by different components, and the functionality of several components can be combined and executed on a single component. The components can be implemented, for example, as software (e.g., computer executable instructions), hardware (e.g., an application specific integrated circuit), or as a combination of both (e.g., firmware). In other examples, the components could be distributed among remote devices across the network 6 (e.g., external web services).
In one example, a user 12 of the origin printer 4 can print multiple images on the destination printer 10 with a single upload to the cloud server system 8. For instance, the user 12 can employ the origin printer 4 to upload a file with multiple images stored therein to the cloud server system 8, which file can be referred to as a multi-image file. In one example, multiple images can be provided to the origin printer 4 from a memory 14. Each of the multiple images could be implemented, for example, as an image file 16, such as a JPEG file, a raw image format file, a portable network graphics (PNG) file, etc. In one example, the memory 14 could be implemented as flash memory (e.g., a secure digital (SD) card) physically coupled to the origin printer 4. In other examples, the memory 14 could be implemented on an external system, such that the multiple images can be provided to the origin printer 4 via the network 6. In still other examples, printed images can be scanned into the memory 14. The user 12 can employ a graphical user interface (GUI) of the origin printer 4 and/or an external system to select the multiple image files 16 to be printed at the destination printer 10. Additionally, the user 12 can select the destination printer 10. In some examples, the destination printer 10 can be selected by the user 12 providing an identification of the destination printer 10 (e.g., an e-mail address, a node address, an alias of the destination printer 10, etc.). In other examples, the GUI could provide the user 12 with a list of possible destination printers.
Upon receipt of the multiple image files 16, the origin printer 4 can employ an image merger 18 to merge the multiple image files 16 (selected by the user 12) into a single file to generate the multi-image file. In one example, the multi-image file could be implemented as a portable document format (PDF) file. In such a situation, the image merger 18 could be implemented, for example, as a PDF file generator. The origin printer 4 can generate a print message that includes the multi-image file.
In one example, the print message can be implemented as an e-mail message. Moreover, in a situation where the print message is implemented as an e-mail message, the cloud server 22 can receive the print message requesting that images in the multi-image attached to the print message be printed. In such a situation, the origin printer ID can be implemented as a sender e-mail address for the e-mail message, and the destination printer ID could be implemented as a recipient e-mail address for the e-mail message, as explained herein.
As one example, to send an e-mail message (e.g., the print message implemented as an e-mail message) across the network 6 from an origin printer 4 to the cloud server 22 (which e-mail message designates the destination printer 10 as a destination of the print message), the origin printer 4 can connect to an e-mail server 24. In some examples, the e-mail server 24 could be implemented as a Simple Mail Transfer Protocol (SMTP) server. In other examples, the e-mail server 24 could be a proprietary e-mail server 24. The e-mail server 24 can respond to the origin printer 4 with an acknowledgment message. Upon receiving the acknowledgment message, the origin printer 4 can provide an identity message that identifies the origin printer 4. The identity message can include, for example, a client-hostname for the origin printer 4. The e-mail server 24 can respond to the identity message with another acknowledgment message. In response, the origin printer 4 can identify an e-mail address of the origin printer 4 (e.g., MAIL FROM:<sender address>). The e-mail server 24 can respond with another acknowledgment message. In response, the origin printer 4 can identify an address of the destination printer 10 (e.g., “RCPT TO:<recipient address>”), and the e-mail server 24 can respond with another acknowledgment message. In response, the origin printer 4 can provide a request to start transmitting the e-mail message (e.g., the print message), and the e-mail server 24 can respond with a message that requests that the origin printer 4 start the input for the e-mail message, and to end the input with a specific ending identifier (e.g., a carriage return, line feed, a period and another carriage return, line feed“<CRLF>.<CRLF>”). In response, the origin printer 4 can provide the print message (as an e-mail message) to the e-mail server 24 including the specific ending identifier. In response, the e-mail server 24 can provide an acknowledgment of reception the e-mail message, and the origin printer 4 can disconnect from the e-mail server 24.
Upon receipt of the e-mail message, the e-mail server 24 can create an envelope for the e-mail message by employing information provided in the address of the sender and the address of the recipient (the destination printer 10) provided from the origin printer 4. The envelope can have the same or different sender and recipient e-mail addresses as the print message. For purposes of simplification of explanation, it is to be understood that the term “address field” can refer to either a field in a header of the print message, and/or as an address included in the envelope. The e-mail server 24 can provide the envelope and the e-mail message to a delivery agent that can examine the envelope, and provide the print message in an appropriate mailbox, such as a mailbox of the cloud server 22. The cloud server 22 can detect the presence of the print message in the mailbox of the cloud server 22, and retrieve the print message. In this manner, the origin printer 4 can provide a print message (implemented as an e-mail message) that includes the destination printer 10 as a recipient of the e-mail message and the cloud server 22 can receive and process such a print message. In
Upon receipt of the print message, the cloud server 22 can access a file in data storage 26 that includes a printer record for the destination printer 10. The data storage 26 could be implemented, for example, as memory (volatile or non-volatile) for storing data, such as a database and/or a table. The data storage 26 could be implemented, for example, as a part of a node the network 6 (e.g., a storage server), and/or a system internal to the cloud server system 8. Moreover, although only one data storage 26 is illustrated in
The cloud server 22 can employ a rendering engine 28 to extract each of the images from the multi-image file, and generate a set of commands in the native protocol for the destination printer 10 for printing each of the images. The set of commands can be implemented, for example, as printer command language (PCL) commands, portable document format (PDF) commands, HEWLETT PACKARD® Graphics Language (HPGL), commands, etc. The cloud server 22 can provide the set of commands in an instruction message for the destination printer 10. To provide the instruction message, the cloud server 22 can include a printer driver for the destination printer 10. In some examples, the printer driver for the printer could be provided to the cloud server 22 from an external system (e.g. a web service).
Upon receipt of the instruction message, the destination printer 10 can execute the set of commands stored therein to print the images. Upon completion of the printing, the destination printer 10 can provide the cloud server 22 with a completion message. In response, the cloud server 22 can provide the origin printer 4 with a status update message that indicates that the destination printer 10 has printed the multiple images. The origin printer 4 can provide an indication of the status to the user 12. In some examples, the indication of the status can be provided in the aforementioned GUI and/or as a message printed on paper.
By utilization of the network system 2, the user 12 can print multiple images at the destination printer 10 from the origin printer 4 without the need for physical access to a separate computer. Furthermore, the multiple images can be uploaded (e.g., as an e-mail message) to the cloud server system 8 from the origin printer 4 in a single print message. In this manner, the user 12 would not have to upload individual images for printing at the destination printer 10.
In another example, the user 12 of the origin printer 4 may desire to upload multiple images to an image album. In such a situation, the user 12 can employ the GUI of the origin printer 4 to select multiple images from the memory 14, such that a multi-image file is generated in the manner described herein. Moreover, the user 12 can select that the images are to be uploaded to an image album. In some examples, the user 12 can also enter album credentials (e.g., a username and password) needed to access the image album. In some examples, the album credentials can be associated with the user 12, additionally or alternatively, in other examples the album credentials can be associated with the origin printer 4. In response, the origin printer 4 can generate an album message.
The cloud server 22 of the cloud server system 8 can receive the album message. The album message could be provided, for example, over a hypertext transfer protocol secure (HTTPS) channel established between the origin printer 4 and the cloud server 22. In response to the album message, the cloud server 22 can employ the rendering engine 28 to extract the images from the multi-image file, and convert the images into a format suitable for upload to an image album system 30. The image album system 30 can be implemented, for example, as a web-based image album storage system. Moreover, the cloud server 22 can upload converted images, along with the album credentials to the image album system 30. In response, the image album system 30 can store the multiple images in an image album associated with the user 12 and/or the origin printer 4. In some examples, the image album system 30 can store the image album in the data storage 26. In such a situation, the data storage 26 could be implemented on a storage server.
Upon storing the multiple images, the image album system 30 can provide the cloud server 22 with a completion message. Accordingly, the cloud server 22 can provide a status update message of completion to the origin printer 4, which can in turn, provide the user 12 with a notification (via the GUI and/or a printed message) confirming that the image alum system 30 has stored the multiple images. Thus, at a later time the same or different printer (e.g., the origin printer 4 and/or the destination printer 10) can access the album associated with the user 12 and/or the origin printer 4 (or some portion thereof) and select and print images stored in the album associated with the user 12 and/or the origin printer 4. For instance, the image album system 30 may provide a mechanism to share a given album (or some portion thereof) with another user. In other situations, users could exchange credentials (e.g., usernames and passwords) to allow access to a given album. In this manner, the user 12 need not perform individual uploads of images for the album associated with the user 12 and/or the origin printer 4. Instead, a single upload can provide multiple images.
The cloud server 160 can include an on ramp 162 that receives a print message with a multi-image file containing multiple images to be printed at a destination printer. The print message can be implemented, for example, as an e-mail message. The on ramp 162 can provide the print message to a rendering engine 164 of the cloud server 160. The rendering engine 164 can evaluate a destination ID in the print message and retrieve a printer record from a data storage 166 of the cloud server system 150 for the printer associated with the destination ID, wherein the printer can be referred to as an indentified printer. The data storage 166 can include, for example, a database and/or a table that can store the printer record. The data storage 166 can be implemented, for example as volatile memory (e.g., RAM) or non-volatile memory (e.g. a hard disk and/or a flash drive). The printer record can include routing information (e.g., a network address) of the identified printer. The printer record can further include data that characterizes printing capabilities of the identified printer. The rendering engine 164 can extract each of the multiple images from the multi-image file and generate a set of commands for printing each of the multiple images in a protocol native to the identified printer (e.g., PCL, PDF, HPGL, etc.). The set of commands can be provided to an off ramp 168 of the cloud server 160.
The off ramp 168 can send the set of commands as an instruction message to the identified printer over the network 156, thereby causing the identified printer to process the set of commands. The processing of the set of commands can result, for example, in printing of the multiple images at the identified printer. The off ramp 168 can receive a status message from the identified printer. The status message could be implemented, for example as a completion message indicating that the identified printer has printed the multiple images, as described herein with respect to
In another example, the cloud server 160 can receive an album message. The album message can include, for example, an origin printer ID and album credentials (e.g., a username and password). The album message can also include a multi-image file, similar to the multi-image file included in the print message. The cloud server 160 can provide the album message to the rendering engine 164. In response to the album message, the rendering engine 164 can extract each of the multiple images from the multi-image file, and convert the images into a format suitable for uploading to an image album system. In some examples, the converted images can be implemented as a plurality of discrete files, while in other examples the converted images could be implemented as a single file that stores multiple images. The converted images can be provided to the off ramp 168. The off ramp 168 can provide the converted images, along with the album credentials to the image album system via the network 156. The off ramp 168 can receive an acknowledgment message from the image album system, which acknowledgment message acknowledges that the multiple images have been stored in an image album associated with the album credentials. Moreover, the off ramp 168 can provide a message to the sender of the album message, namely, the printer associated with the origin printer ID of the album message indicating that the images in the multi-image file have been stored in the album associated with the album credentials.
In view of the foregoing structural and functional features described above, example methods will be better appreciated with reference to
At 230, a destination printer can be identified. The destination printer can be identified, for example, based on a destination printer ID included in the print message. Identification can include, for example, retrieval of a printer record for the destination printer based on the destination printer ID. At 240, multiple images are extracted from a multi-image file included with the print message. At 260, a command set in a native protocol (e.g., PCL, PDF, HPGL, etc.) for the destination printer can be generated based on the multiple images. The command set, when executed, can cause the destination printer to print the multiple images. At 270, an instruction message for the destination printer can be provided to the destination printer. Upon receive of the instruction message, the set of commands provided in the instruction message can be executed by the destination printer to print the multiple images provided in the print message.
At 240, a determination can be made as to whether the message (received at 210) is an album message. The determination can be based, for example, on a header of the message. If the determination at 240 is negative (e.g., NO), the method 200 can proceed to 280. If the determination at 240 is positive (e.g., YES), the method 200 can proceed to 290. At 280, the message can be processed according to the type of message received, since it has been determined that the received message is neither a print message nor an album message.
At 290, images can be extracted from a multi-image file in the album message. At 300, the images can be converted (e.g., by the rendering engine) into a format native to an image album system. At 310, the converted images, along with album credentials (e.g., a username and password) for a user and/or the origin printer can be uploaded to the image album system.
By utilization of the method 200, a user of the origin printer can print multiple images on the destination printer with a single message provided to the cloud server. Moreover, in other examples, the user can upload multiple images for an image album with a single message.
The system 700 can include a system bus 702, a processing unit 704, a system memory 706, memory devices 708 and 710, a communication interface 712 (e.g., a network interface), a communication link 714, a display 716 (e.g., a video screen), and an input device 718 (e.g., a keyboard and/or a mouse). The system bus 702 can be in communication with the processing unit 704 and the system memory 706. The additional memory devices 708 and 710, such as a hard disk drive, server, stand alone database, or other non-volatile memory, can also be in communication with the system bus 702. The system bus 702 operably interconnects the processing unit 704, the memory devices 706-710, the communication interface 712, the display 716, and the input device 718. In some examples, the system bus 702 also operably interconnects an additional port (not shown), such as a universal serial bus (USB) port.
The processing unit 704 can be a computing device and can include an application-specific integrated circuit (ASIC). The processing unit 704 executes a set of instructions to implement the operations of examples disclosed herein. The processing unit can include a processor core.
The additional memory devices 706, 708 and 710 can store data, programs, instructions, database queries in text or compiled form, and any other information that can be needed to operate a computer. The memories 706, 708 and 710 can be implemented as computer-readable media (integrated or removable) such as a memory card, disk drive, compact disk (CD), or server accessible over a network. In certain examples, the memories 706, 708 and 710 can comprise text, images, video, and/or audio.
Additionally, the memory devices 708 and 710 can serve as databases or data storage such as the data storage 26 and/or the memory 14 illustrated in
In operation, the system 700 can be used to implement, for example, an origin printer, a cloud server, a destination printer and at least some components in other systems that can be employed in a system that provides multiple images. Computer executable logic for implementing the system, such as the memory 20 of the cloud server system 8 illustrated in
Where the disclosure or claims recite “a,” “an,” “a first,” or “another” element, or the equivalent thereof, it should be interpreted to include one or more than one such element, neither requiring nor excluding two or more such elements. Furthermore, what have been described above are examples. It is, of course, not possible to describe every conceivable combination of components or methods, but one of ordinary skill in the art will recognize that many further combinations and permutations are possible. Accordingly, the invention is intended to embrace all such alterations, modifications, and variations that fall within the scope of this application, including the appended claims.