I'd like to thank the contributors for this discussion, particularly Darren, who provided a nice solution to a problem I had making transient images on the server side and displaying them on the client side.
On Mon, Mar 16, 2009 at 12:40 AM, alex.d <[email protected]>wrote: > > Does the img.setUrl("data:image/jpg;base64,"...-trick work reliable in > all major browsers? > > On 13 Mrz., 15:07, Darren <[email protected]> wrote: > > The one case that hasn't been mentioned is when one dynamically > > creates transient images on the server. > > > > We transform various XML data sources into SVG and then transcode into > > JPG (using Batik) on the fly, then base 64 encode the JPG into a > > string and send it across via GWT-RPC. > > > > Then on the client, once you have the image data from the RPC callback > > (as a String): > > String base64EncodedImage = ... ; > > Image img = new Image(); > > img.setUrl("data:image/jpg;base64," + base64EncodedImage); > > > > On Mar 13, 5:08 am, stone <[email protected]> wrote: > > > > > use a servlet url for downloading img. > > > for example: myapp/dbimage/123456 > > > and the servlet mapping is /dbimage/* > > > > > On Mar 13, 9:52 am, Itamar Ravid <[email protected]> wrote: > > > > > > Don't forget however to set the content type on the response to an > image of > > > > some type, otherwise the client's browser will try to download the > picture > > > > rather than display it. > > > > > > On Fri, Mar 13, 2009 at 2:28 AM, gregor < > [email protected]>wrote: > > > > > > > I think Itamar is right, Jack, you should use a standard > HttpServlet > > > > > for this, not GWT-RPC, because this sends the image over to the > > > > > browser as byte steam, and I don't think RPC can do that. > > > > > > > First, I take it these are not images used in your UI (like icons > > > > > etc), 'cos those should go in an ImageBundle. I assume you know > that & > > > > > these images are downloaded as user selections etc. > > > > > > > 1) Consult your MySQL docs/forum to find out how to obtain an > > > > > InputStream for the image via JDBC. You want to pass an InputStream > > > > > back to your image download HttpServlet. You don't want to read out > > > > > the image bytes yet. > > > > > > > 2) You write the HttpServlet something like this example (there are > > > > > lots of others around): > > > > > > >http://snippets.dzone.com/posts/show/4629 > > > > > > > Notice that the key is a looping read of the InputStream (which you > > > > > got from MySQL) that writes straight into the HttpServlet's > response > > > > > OutputStream. Notice also it uses a buffer byte[] array. This is so > > > > > that your web server does not get it's memory clogged up with big > > > > > image byte arrays - the image bytes just get shunted from the DB > > > > > straight out to the browser via this buffer. Therefore set this > buffer > > > > > small. Apache tend to use 2048 bytes. I think Oracle prefer 4096. > That > > > > > sort of size for the buffer. Take care to set the response content > > > > > type so the browser knows what it's dealing with. > > > > > > > 3) In your client you can set the Image widget's URL to your image > > > > > download HttpServlet adding a parameter for the image id. > > > > > > > regards > > > > > gregor > > > > > > > On Mar 12, 8:54 pm, "[email protected]" > > > > > <[email protected]> wrote: > > > > > > Hi, > > > > > > > > I'm not too sure how to implement a HTTPServlet. Does anyone know > how > > > > > > to use images using RPC? > > > > > > > > Im really stuck on this. > > > > > > > > On Mar 12, 8:43 pm, Itamar Ravid <[email protected]> > wrote: > > > > > > > > > The best way, IMO, is to not use GWT-RPC, but rather implement > an > > > > > > > HttpServlet, that retrieves the data from the database and > returns it > > > > > with > > > > > > > the appropriate Content-Type in response to a GET http request. > Then, > > > > > you > > > > > > > simply place an image in your GWT code, with its source being > the path > > > > > to > > > > > > > the servlet (defined in your web.xml), passing along any > parameters > > > > > required > > > > > > > - such as the ID of the image in the database. > > > > > > > > > On Thu, Mar 12, 2009 at 12:59 PM, [email protected] < > > > > > > > > > [email protected]> wrote: > > > > > > > > > > Hi, > > > > > > > > > > I am new to loading images into GWT from MySQL and am abit > lost on > > > > > the > > > > > > > > best way to do it. > > > > > > > > > > I already have my image in the database. How do I retrieve > it? I read > > > > > > > > somewhere that it can just be stored as a String. Is this > correct? So > > > > > > > > my code on the server side would look like: > > > > > > > > > > //Open database connection > > > > > > > > dc.openConnection(); > > > > > > > > resultSet = dc.statement.executeQuery(SELECT CategoryImage > FROM > > > > > > > > itemcategory_table WHERE ItemType = 'Test'); > > > > > > > > > > while(resultSet.next()) { > > > > > > > > String test = resultSet.getString(1); > > > > > > > > } > > > > > > > > > > dc.closeConnection(); > > > > > > > > > > Or have I got this completely wrong? > > > > > > > > > > Next, I need to send this over to the client. What is the > best way to > > > > > > > > send an image over from the server to the client and how > should it be > > > > > > > > stored? > > > > > > > > > > Any help on how to use images would be much appreciated! > > > > > > > > > > Regards, > > > > > > > > Jack > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
