1. Field of the Invention
This invention relates generally to a system for accessing an image editing application over the internet and how to execute a printing function from within a Java™ based application.
2. Description of the Related Art
There are various difficulties in providing an application remotely over a computer network to an end user. These difficulties are increased when the computer network is the internet. In regards to the internet, a first difficulty is in dealing with different operating system platforms that an end user, or remote user, may use. A second difficulty is the limitations in transmission bandwidth available to a remote user. This second difficulty is exasperated when one wishes to provide a graphics intensive application, such as image editing, over the internet. A third difficulty pertains to how to make the application workable with the varying capabilities of each remote user's individual computing device, or machine. For example, a first remote user may have a fast computer with much available memory while a second remote user may have a slower machine with a minimum amount of memory.
Various approaches have been tried to overcome the above difficulties. The first issue of how to deal with different operating systems, or platforms, has been addressed with the creation of platform independent internet, or web-based, browsers. Typically, a specialized browser is constructed for each platform, but each browser is designed to respond similarly to command scripts from a web-page authoring language, such as HTML and its deviants. Such web-page authoring languages, however, are limited in capabilities and various applications languages have therefore been developed to augment their functionality.
Java™ is one such application language that has gained much popularity, and contains built-in support for the internet, or world wide web. When compiled, a Java application generates byte codes that are interpreted on a Java virtual machined for interfacing with a machine's particular platform. A specialized virtual machine needs to be created for each platform, but once constructed, one can ideally create a single Java-based application that will run on several different computer platforms by virtue of their respective Java virtual machines. Another reason for Java's popularity is its ability to create programs designed to run as part of the web browser, referred to as applets, and programs designed to run as stand-alone, web-independent programs, referred to as Java apps. However, since Java runs on an intermediate layer of software, i.e. the platform-specific virtual machine, it can be slower than native code, which is compiled and optimized specifically for a target computer platform. To mitigate this speed penalty, several web browsers have implemented the use of just-in-time compilation to convert Java byte codes into a native programs when a Java applet is received. Additionally, and unlike native code, a Java applet or app can typically not gain access to any machine resources not specifically provided to it by the Java virtual machine. To address the resource limitation issue, a Java native interface has been added to the Java language to permit Java code to pass parameters between itself and native code written in a different computer language.
The second difficulty of low transmission bandwidths is typically addressed by reducing the capability of the web-based application, requiring that the remote user obtain a higher frequency access channel, or downloading an application once and having it incorporated into, or “plugged-in” to, the user's web browser's capabilities. Although it may still take a long time to down load an application, at least it only needs to be done once.
The third difficulty of how to deal with the differing computing capabilities of different end users is more difficult to address since, as explained above, access to a computer's hardware resources are typically limited in Java. Additionally, often times the capabilities of a web browser or virtual machine are further limited by engineers in charge of maintaining local networks in order to exert a greater control over the types of applications and computer resources available to an end user. Thus, this problem is usually addressed by posting a warning to a prospective end user listing the minimum computing capacity required to adequately run an internet application. The remote user must then determine if he possesses the required computing capacity, and if not, then determine whether to download and run the application in spite of possible low performance or incompatibility issues.
The above described issues are especially important when one wishes to provide an image editing application over the internet. A first reason for this is that if one wishes to permit the printing of a high-quality downloaded image, then the image should ideally be of high resolution. However, a high resolution image requires a large image file size, whose transmission is hampered by the relatively low transfer frequencies available to most remote users. For example, a high resolution image suitable for high quality printing may be several megabytes in size, and this would mean that a remote user would potentially need to wait an exorbitant amount of time to download the image before even beginning to use the image editing application.
Large image files pose another problem. As it is known in the art, a computing device, such as a remote user's personal computer, uses a large and permanent nonvolatile memory space, typically a hard drive, for storing permanent data, and uses a smaller random access memory, RAM, to manipulate data during the execution of an application. The reason this is pertinent to the present issue is that the size of a high resolution image file may actually be greater than the amount of RAM memory available to a remote user. Since Java has a minimum ability to control, and therefore to manage, hardware resources on a remote user's machine, it is quite likely that the application would cease to function, i.e. “crash”, when attempting to manipulate such a large image file. Even if one manages to overcome the above-described problems associated with a large image file, the end objective of simply printing the image poses its own compilations.
There are various revisions of Java available to a remote user. Earlier versions of Java supported no, and later only limited, printing capability. Only recently with the advent of “Java 2” has practical print functionality been made available. Thus, if one wishes to provide a Java-based application with printing functionality, one would presumably require that the end user upgrade his Java virtual machine to a version of “Java 2” or greater. This is generally not practical since it places an undue burden on the end user, especially if Java 2 is not available to the end user, or not compatible with the end user's computing resources.
Additionally, one cannot assure consistent print quality across all platforms to all end users using Java's printing functions. When printing in Java, one creates a print manager process that interfaces with a Java print formatting object and the printer's driver. The print manager process provides the user with the printer driver's graphics user interface, GUI, to collect page format and ink option details. The printer manager then sends kind of blank page to the Java print formatting object in essence draw on the blank page what is to be printed. The Java print formatting object returns the page to the printer manager which then passes the page and the collected printer options to the printer driver. The Java print formatting object uses Java drawing processes for generating the image to be printed, and is thus limited by Java's capabilities. For instance, the Java print formatting object can treat the blank page passed to it like a screen canvas, and can cast graphics context into Java's Graphics2D context to make use of Graphics2D's options for selecting that an image be created with higher or lower quality. However, not all platforms support modifications of the Graphics2D rendering mode so that specifying rendering options, such as improving or maintaining a high quality image, does not guarantee that specified option will be used.
What is needed is a method of utilizing Java's established platform portability to provide multiple remote users with a high quality image editing utility, while assuring reliability and providing consistent printing quality among the remote users.
Therefore, it is an object of the present invention to provide a web-based application that provides a quality printing capability to remote users, including those having different Java versions or resource restrictions.
It is another object of the present invention to simplify the use of a printer when using an image editing application.
It yet another object of the present invention to streamline the use of a web-based application.
It is still another object of the present invention to overcome some of the performance limitation due to differing computing capabilities by different users.
It is still another object of the present invention to reduce the frequency requirements for using an on-line image editing application that provide high resolution images for high quality prints.
The above recited objects are met in a network system, or printing method, in which a network server, or application, maintains a separate list of approved printers associated with each of multiple independent utilities. Furthermore, each utility has an associated list of predetermined, and fixed, printer-setting parameters. Thus when an activity is actuated, it already knows what printer settings it requires and is assured that the settings are supported by the available printer. To ensure that this is always the case, a client user having a local printer is denied access to any utility that is not associated with the local printer. Thus, upon selection of a utility, the present network system or application, implements a verification sequence to determine if the client user has access to a local printer associated with the selected utility. If no such local printer is available to the client user, then the client user is denied access to the selected utility.
Alternatively, the network system or application, may implement a printer inquiry routine to determine the model name, or number, of local printer available prior to supplying any list of available utilities. In this manner, the client user is presented with an options list showing only the utilities that have an approved association with the client user's available local printer. If the client user does not have access to an approved printer, or does not have access to any printer, then the client user is denied access to all utilities.
Furthermore, a library of available target images maintains an image set for each downloadable target image. Each set includes a thumbnail representation of the target image, a screen representation of the target image, and a printer representation of the target image. The screen representation has a resolution similar to that of a typical computer monitor, and is of higher resolution than the thumbnail representation. The printer representation image is of higher resolution than the screen representation image. When a client user is granted access to a utility, the client user is presented with the thumbnail images to select from. Once a selection is made, the client user is presented with the screen representation image for editing on the computer monitor. If the client user wishes to print the edits, then the printer representation image is transferred to the client user.
Since the printer representation image may be larger than the amount of RAM memory available to the client user, the printer representation image is divided into multiple tile images of size smaller than the available RAM. Each tile is then treated as an independent image file, and separately manipulated and separately sent to be printed. A coordinate system is used to maintain track of the appropriate location of each tile relative to each other.
The preferred method for splitting an image into tiles includes the following sequence steps:
define a maximum image area corresponding to a predetermined amount of memory capacity, such as that defined by available RAM space;
if the area of a target image tile is greater than the defined maximum image area then execute the following sub-steps:
Other objects and attainments together with a fuller understanding of the invention will become apparent and appreciated by referring to the following description and claims taken in conjunction with the accompanying drawings.
In the drawings wherein like reference symbols refer to like parts,
With reference to
In the presently preferred embodiment, network server 17 may supply multiple image editing utilities to user station 11, and is therefore shown having access to an image library 21. It is to be understood that image library 21 may an integral part of network server 17 and is shown separate from server 17 purely for illustrative purposes.
With reference to
Activity_2 is identified as a business card activity and it would, for example, provide client station 11 with multiple card patterns, business related images from image library 21, and text editing capabilities.
Activity_3 represents a book cover creating activity. In this case, a user at user station 11 may be presented with various images and patters for printing onto a book cover medium, such as a large sheet of plane or matte paper. The size of the book cover medium may range from relatively small to A4 size to poster size 17″×22″, or larger. In this case, it is preferably that a separate selection option be provided for each paper size associated with each book cover creation activity. For example, in
Activity_4 is illustratively shown as an activity for creating decorative boxes. In this case, the activity may print the outline pattern of a foldable box on a printing media, such as heavy weight paper or cardboard, and provide images for decorating the box sides. Since the expected printing media is relatively thick, activity_4 may also include a pre-set printing parameter requiring that a larger amount of ink be used during printing to assure proper ink saturation into the printing media.
The last exemplary activity shown is activity_m, representing a picture frame creating activity. In this case, the activity would permit a remote user at client station 11 to create and edit decorative picture frames on a printing media. The printed frames may be cut and thereby be made suitable for displaying pictures.
It is to be understood that the above enumerated activities are for illustrative purposes, and that multiple additional image editing utilities may be added, such as photo editing and paper fan creating activities.
In the preceding description of activity_1 to activity_m, it was explained that some of the activities have predetermined, and pre-set, print parameters. However, it is preferred that all the printing parameters be pre-set, and fixed, for each of activity_1 to activity_m. That is, each activity may have an associated file containing a printer parameter list specifying its preferred paper size, paper type (i.e. plane, photo, cardboard, etc.), paper weight, paper surface (such as matte, glassy, plane), and margins. Additional preset printer preferences included in each associated file may include the use of color or black-and-white printing, print media orientation (i.e. landscape or portrait), as well as ink saturation properties such as having a parameter for each activity defining a compromised between print speed versus print quality. These predetermined print preference setting are preferably not alterable by the end user.
Since not all printers can support all the pre-set printer parameters listed in each activity's associated file, each activity preferably also includes a list of pre-approved printers with which it is compatible. For example, the table of
The file used to associate an activity to a list of approved printers, can alternatively be used to associate a printer with a list of correspondingly approved activities. For example, if printer 15 of
The above described, approved printer model-to-permissible activity association is preferably enforced by network server 17 of
In a second approach toward enforcing the above described correlation, network server 17 responds a remote user on client station 11 by first supplying the end user with an options list of approved printer models printer_1 to printer_n, and requesting that printer 15 be identified from among the list. As in the previous case, network server may request information about the printer driver installed on computer 13 to verify the information regarding printer 15. Alternatively, network server 17 may request that computer 13 interrogate printer 15 to determine its model name, or number. Once the identity of printer 15 is ascertained, network server 17 may check if printer 15 is one of approved printer_1 to printer_n. If printer 15 is not an approved printer, then client station is not permitted access to any of activity_1 to activity_m. If printer 15 is one of the approved printers, then client station 11 is presented with another options list showing only the activities associated with printer name of printer 15. For example, if printer 15 is model printer_3 then client station is provided with an option list showing only activity_1 and activity_3, as specified by the table in
Once client station 11 has gain access to one of activity_1 to activity_m, the next issue to address is the question of speeding up the transfer of an editable image over the internet 19. With reference to
With reference to
At this point, the end user may decide to disregard all edits and close the application without printing. If this is the case, then the image editing application of the present invention would have permitted quick access to all the images and to the utilities without requiring an a long wait for downloading a high resolution image. However, if the user decides to print the image, then network server 17 responds by transferring the corresponding high resolution, printer-representation image P2. As shown in
As explained above, various complications arise when trying maintain consistent print quality among multiple remote user while using Java, especially if using a relatively larger file, such as printer-representation images P1-Pi. Before discussing how the present invention addresses these complications, it would be advantageous to explain the manner in which files are typically manipulated.
With reference to
With reference to
With reference to
With reference to
With reference to
To simplify matters, however, the transferring of image tiles from hard drive 25 to RAM 27 can be made dependent on whether one wishes to print a direct representation of image P2 or a rotated representation of image P2. If the image does not need to be rotated, then one can send the tiles to RAM 27 in alignment with the rows of tile of the original image P2, one row at a time. If the image needs to be rotated, then one can send the tiles in alignment with the columns of tiles and rotate each tile in sequence, one column at a time. Therefore, it is no longer necessary for the entire image to be stored in RAM 27 prior to rotation.
Alternatively, the printer representation image P2 may be divided into tiles by network server 17, prior to sending the image P2 to the client station 11. In this case, the tiles may be stored directly within RAM 27 without the need to store the complete image (consisting of the composite of all the tiles) within a secondary memory space, i.e. the hard drive 25.
To illustrate the preferred method of splitting an image within hard drive 25 into tiles,
The presently preferred method of printing a large image is implemented in native code written in, for example, the “C” or “C++” computer language and compiled separately for each platform that the utility of network server 17 may expect to interface with. When network server 17 is accessed by a client station 11, it interrogates the client station about what computer platform it, i.e. computer 13, is using and provides the appropriate native code.
To interface the present native code printing routine with the remainder of the utility, which is preferably implemented in Java, the present invention deviates form the Java print model. When a print option is selected, the present invention does not need to present the user with a printer-settings option since such options are fixed according to the each activity. The present invention then transfers the control to the native code through Java's JNI utility (java native interface) or computer 13's TCP/IP communication port. The print parameters may be a part of the native code, or may be transferred to the native code from Java. The native code tiles the image accordingly and controls the transferring to tile image from hard drive 25 to RAM 27. Preferably, the native code generates the printable image that is sent to the printer driver. This is done to avoid the inconsistencies associated with Java's print model. Thus, the native code requires the passing of information from Java specifying any edits committed to the screen-representation image, i.e. S2, by the user, and then recreates the same edits on the print-representation image, i.e. P2, one tile at a time. Since each tile is treated as a separate image, the native code sends each tile independently sent to the printer. Alternatively, the native code may transfer the edited tile image back to Java to be relayed to the printer.
While the invention has been described in conjunction with several specific embodiments, it is evident to those skilled in the art that many further alternatives, modifications and variations will be apparent in light of the foregoing description. Thus, the invention described herein is intended to embrace all such alternatives, modifications, applications and variations as may fall within the spirit and scope of the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5220674 | Morgan et al. | Jun 1993 | A |
5467434 | Hower et al. | Nov 1995 | A |
5838906 | Doyle et al. | Nov 1998 | A |
6011916 | Moore et al. | Jan 2000 | A |
6211877 | Steele et al. | Apr 2001 | B1 |
6216113 | Aikens et al. | Apr 2001 | B1 |
6452692 | Yacoub | Sep 2002 | B1 |
6453129 | Simpson et al. | Sep 2002 | B1 |
6700891 | Wong | Mar 2004 | B1 |
6814510 | Sabbagh et al. | Nov 2004 | B1 |
6952780 | Olsen et al. | Oct 2005 | B2 |
6965958 | Sugiyama | Nov 2005 | B1 |
7099028 | Schneider et al. | Aug 2006 | B2 |
20020097419 | Chang et al. | Jul 2002 | A1 |
Number | Date | Country | |
---|---|---|---|
20030076521 A1 | Apr 2003 | US |