• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Displaying a dynamic photo thumbnail in servlet

 
Ranch Hand
Posts: 287
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I have a servlet that displays a picture in thumbnail form and then when the user clicks on it a pop up window shows the full sized pic. What I am doing for the thumbnail is forcing the pic, no matter what it's size, into a 125 x 125 pixel format but it makes some of the pics REALLY strange looking! I know with applets you can get the pic size but I was wondering if there was any way to do this with servlets & then scale the pic to fit into the thumbnail format so even though its been scaled down it still looks normal. Any suggestions would be appreciated!
 
Sheriff
Posts: 3341
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi DC,
First of all, you could use ImageIcon and load the GIF into your Servlet.
ImageIcon ii = new ImageIcon("/images/Picture.gif");
Then use the getIconHeight and getIconWidth methods this gives you x and y from there you can determine a scaled size that you feel is appropriate.
Personnally, I'd take each of the images and create a scaled version and store that. That way big Gifs don't have to be downloaded on the client to use for nothing more than a thumbnail. I believe Graphics Workshop is a good package to do the scaling with.


------------------
I Hope This Helps
Carl Trusiak, SCJP2
 
DC Dalton
Ranch Hand
Posts: 287
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I would do the thumbnails manually also but we have thousands of pics now & more being added by users every day. The problem is members create their ad & it is displayed immediately. To make thumbnails would be a full time job for someone! I found the imageIcon in the API & will try it out today..thanks much!
 
DC Dalton
Ranch Hand
Posts: 287
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
OK, I tried this thing out & got the strangest exception Ive ever seen. Here's the exception:
500 Servlet Exception
java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:59)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:120)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:58)
at sun.awt.motif.MToolkit.<clinit>(MToolkit.java:57)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:120)
at java.awt.Toolkit$2.run(Toolkit.java:512)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:503)
at javax.swing.ImageIcon.<init>(ImageIcon.java:77)
at javax.swing.ImageIcon.<init>(ImageIcon.java:103)
at thumbTest.doPost(thumbTest.java:19)
at thumbTest.doGet(thumbTest.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:102)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:83)
at com.caucho.server.http.Invocation.service(Invocation.java:325)
at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:333)
at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:266)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:484)
AND here's the code I used:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.swing.*;
public class thumbTest extends HttpServlet{

public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{
res.setContentType ("text/html");
PrintWriter out = res.getWriter();
String photoName = "testPho.jpg";
ImageIcon ii = new ImageIcon("/adPics/"+photoName);
int height = ii.getIconHeight();
int width = ii.getIconWidth();
double imagePercentage = 0.0;
if (height > width){
imagePercentage = 125 / height;
}
else{
imagePercentage = 125 / width;
}
out.println("<img border='0' src='/adPics/"+photoName+"' WIDTH='"+width * imagePercentage+"' height='"+height * imagePercentage+"'>");
out.println("<br>�<br>");
out.println("<img border='0' src='/adPics/"+photoName+"'>");
}
public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{
doPost(req, res);
}
};
Unfortunately I am not very good with swing so Im at a loss to see what is wrong here. It seems to be complaining about the intitialization of the percentage variable OR it's not finding the image & thats blowing it up because the variable is still 0.0. Should i use a ServletContext to get the path to the images??
[This message has been edited by DC Dalton (edited October 01, 2001).]
 
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Looks like you are running this on a UNIX box without x-windows configured. Unfortunately, you have to have X-windows configured to use the swing packages even if you are not displaying windows under JDK 1.3 on UNIX boxes. They fixed this problem with JDK 1.4
 
DC Dalton
Ranch Hand
Posts: 287
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Yessur this would be linux on apache! OK, back to the drawing board ..any suggestions here??
 
Ranch Hand
Posts: 18944
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
  1. A quick search of "x11 display variable" on google gave me this link, which answers your exact question: http://java.apache.org/faq/fom-serve/cache/73.html

    OK, I tried this thing out & got the strangest exception Ive ever seen.

  2. I noticed in your HTML code that it references a regular size image, and forces it into a thumbnail size when the user requests the page. Instead, why don't you use the ImageIcon strategy to automatically convert your users' images to thumbnail versions when they are uploaded. Then, when the user requests a page, send them the appropriate size, thumbnail or original.


  3. ------------------
    Miftah Khan
    - Sun Certified Programmer for the Java� 2 Platform
    - Sun Certified Web Component Developer for the Java� 2 Platform, Enterprise Edition
    [This message has been edited by Miftah Khan (edited October 01, 2001).]
 
Alas, poor Yorick, he knew this tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com
reply
    Bookmark Topic Watch Topic
  • New Topic