[jboss-user] [JBoss Seam] - Images Uploaded in Seam

tony.herstell@gmail.com do-not-reply at jboss.com
Sun Aug 19 23:20:38 EDT 2007


Apart from not being able to make the accept on file upload work...

anonymous wrote : 
  | (accept ? a comma-separated list of content types to accept, may not be supported
  | by the browser. E.g. "images/png,images/jpg", "images/*".)
  | 

I use this to create a thumbnail for uploded images... (yo can only set one restriction per project for upload file size and elsewhere I want to upload video!)

Anyhow... using this:


  |     /* (non-Javadoc)
  |      * @see nz.co.selwynequestriancentre.action.user.UserDetailsController#processAvatarUpload()
  |      */
  |     @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
  |     public String processAvatarUpload() {
  |     	// Seam does all the work for us...
  |     	if (user.getPicture().getName() != null && !user.getPicture().getName().equals("")) {
  |     		log.info("Avatar was supplied so adding the Thumbnail for it");
  |     		ImageIcon icon = new ImageIcon(user.getPicture().getImage());
  |     		user.getPicture().setThumbnail(getRescaledImageAsBytes(user.getPicture().getType(), 70, icon));
  |     	}
  |     	return "null";
  |     }
  |     
  |     @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
  |     private byte[] getRescaledImageAsBytes(String contentType , int width, ImageIcon icon) {
  |         double ratio = (double) width / icon.getIconWidth();
  |         int height = (int) (icon.getIconHeight() * ratio);
  | 
  |         int imageType = "image/png".equals(contentType) ? BufferedImage.TYPE_INT_ARGB
  |                 : BufferedImage.TYPE_INT_RGB;
  |         BufferedImage bImg = new BufferedImage(width, height, imageType);
  |         Graphics2D g2d = bImg.createGraphics();
  |         g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
  |                              RenderingHints.VALUE_INTERPOLATION_BICUBIC);
  |         g2d.drawImage(icon.getImage(), 0, 0, width, height, null);
  |         g2d.dispose();
  | 
  |         String formatName = "";
  |         if ("image/png".equalsIgnoreCase(contentType))
  |             formatName = "png";
  |         else if ("image/jpeg".equalsIgnoreCase(contentType))
  |             formatName = "jpeg";
  |         else if ("image/jpg".equalsIgnoreCase(contentType))
  |             formatName = "jpg";
  |         else if ("image/gif".equalsIgnoreCase(contentType))
  |             formatName = "gif";
  | 
  |         ByteArrayOutputStream baos = null;
  |         OutputStream out = null;
  |         try {
  |             baos = new ByteArrayOutputStream();
  |             out = new BufferedOutputStream(baos);
  |             try {
  |                 ImageIO.write(bImg, formatName, out);
  |             } catch (IOException e) {
  |                 e.printStackTrace();
  |             }
  |         } finally { // Try to release any resources.
  |             try {
  |                 if (baos != null) {
  |                     baos.close();
  |                 }
  |             } catch (IOException ignored) {}
  |             try {
  |                 if (out != null) {
  |                     out.close();
  |                 }
  |             } catch (IOException ignored) {}
  |         }
  |         return baos.toByteArray();
  |     }
  | 

I get a problem...

1. Images with a transparent background come out with background as black :(
  

Does anyone have a piece of code I can crib?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4075632#4075632

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4075632



More information about the jboss-user mailing list