[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