[Lift] Re: Resizing images
On Thu, Apr 16, 2009 at 7:36 AM, Charles F. Munat c...@munat.com wrote: Has anyone here done anything with Lift in which uploaded images are resized (or otherwise manipulated) before saving? If so, how did you do it? Any recommendations for libraries? GAE offers that kind of functionality. Thanks! Chas. -- Viktor Klang Senior Systems Analyst --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Resizing images
The Georgia Association of Editors? That's good to know. (Unfortunately, the app is already built and running on my own server and I have no time to play with GAE right now. But I'm getting more and more curious about it.) It's funny. I would think that lots of people would be resizing uploaded images in Java, but I've asked this question before and got nothing. Ruby/Rails folks do this sort of thing all the time with RMagick (and half a dozen other tools). What the heck do Java developers do? Thanks, Viktor! Chas. Viktor Klang wrote: On Thu, Apr 16, 2009 at 7:36 AM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: Has anyone here done anything with Lift in which uploaded images are resized (or otherwise manipulated) before saving? If so, how did you do it? Any recommendations for libraries? GAE offers that kind of functionality. Thanks! Chas. -- Viktor Klang Senior Systems Analyst --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Resizing images
Imagemagick is said to be very efficient for image processing. http://www.imagemagick.org/script/api.php#java If you develop with MacOSX, some people had some compile issues with JMagick and have prefered a more direct solution using exec : http://www.darcynorman.net/2005/03/15/jai-vs-imagemagick-image-resizing/ Jean-Luc 2009/4/16 Charles F. Munat c...@munat.com The Georgia Association of Editors? That's good to know. (Unfortunately, the app is already built and running on my own server and I have no time to play with GAE right now. But I'm getting more and more curious about it.) It's funny. I would think that lots of people would be resizing uploaded images in Java, but I've asked this question before and got nothing. Ruby/Rails folks do this sort of thing all the time with RMagick (and half a dozen other tools). What the heck do Java developers do? Thanks, Viktor! Chas. Viktor Klang wrote: On Thu, Apr 16, 2009 at 7:36 AM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: Has anyone here done anything with Lift in which uploaded images are resized (or otherwise manipulated) before saving? If so, how did you do it? Any recommendations for libraries? GAE offers that kind of functionality. Thanks! Chas. -- Viktor Klang Senior Systems Analyst -- Jean-Luc Canela jlcane...@gmail.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Resizing images
i used jai in the past, a quick google let me to http://www.digitalsanctuary.com/tech-blog/java/how-to-resize-uploaded-images-using-java-better-way.html On Thu, Apr 16, 2009 at 11:10 AM, Jean-Luc jlcane...@gmail.com wrote: Imagemagick is said to be very efficient for image processing. http://www.imagemagick.org/script/api.php#java If you develop with MacOSX, some people had some compile issues with JMagick and have prefered a more direct solution using exec : http://www.darcynorman.net/2005/03/15/jai-vs-imagemagick-image-resizing/ Jean-Luc 2009/4/16 Charles F. Munat c...@munat.com The Georgia Association of Editors? That's good to know. (Unfortunately, the app is already built and running on my own server and I have no time to play with GAE right now. But I'm getting more and more curious about it.) It's funny. I would think that lots of people would be resizing uploaded images in Java, but I've asked this question before and got nothing. Ruby/Rails folks do this sort of thing all the time with RMagick (and half a dozen other tools). What the heck do Java developers do? Thanks, Viktor! Chas. Viktor Klang wrote: On Thu, Apr 16, 2009 at 7:36 AM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: Has anyone here done anything with Lift in which uploaded images are resized (or otherwise manipulated) before saving? If so, how did you do it? Any recommendations for libraries? GAE offers that kind of functionality. Thanks! Chas. -- Viktor Klang Senior Systems Analyst -- Jean-Luc Canela jlcane...@gmail.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Resizing images
Jai or just Java2D would work. I use JAI a lot at work (wrote a large-scale image rendering and compositing application), so if you run into issues there just ask. JAI can be somewhat heavy if you have simple requirements, so you could also just use the Image.getScaledInstance method, which is far simpler. For example: import java.awt.{Image,Tookit} val imageData : Array[Byte] = ... val scaled = Toolkit.getDefaultToolkit.createImage(imageData).getScaledUInstace(width, height, Image.SCALE_SMOOTH) The final param controls which algorithm to use for scaling, so you can use several as defined on the java.awt.Image class. Derek On Thu, Apr 16, 2009 at 5:59 AM, Alexander Kellett lypa...@gmail.comwrote: i used jai in the past, a quick google let me to http://www.digitalsanctuary.com/tech-blog/java/how-to-resize-uploaded-images-using-java-better-way.html On Thu, Apr 16, 2009 at 11:10 AM, Jean-Luc jlcane...@gmail.com wrote: Imagemagick is said to be very efficient for image processing. http://www.imagemagick.org/script/api.php#java If you develop with MacOSX, some people had some compile issues with JMagick and have prefered a more direct solution using exec : http://www.darcynorman.net/2005/03/15/jai-vs-imagemagick-image-resizing/ Jean-Luc 2009/4/16 Charles F. Munat c...@munat.com The Georgia Association of Editors? That's good to know. (Unfortunately, the app is already built and running on my own server and I have no time to play with GAE right now. But I'm getting more and more curious about it.) It's funny. I would think that lots of people would be resizing uploaded images in Java, but I've asked this question before and got nothing. Ruby/Rails folks do this sort of thing all the time with RMagick (and half a dozen other tools). What the heck do Java developers do? Thanks, Viktor! Chas. Viktor Klang wrote: On Thu, Apr 16, 2009 at 7:36 AM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: Has anyone here done anything with Lift in which uploaded images are resized (or otherwise manipulated) before saving? If so, how did you do it? Any recommendations for libraries? GAE offers that kind of functionality. Thanks! Chas. -- Viktor Klang Senior Systems Analyst -- Jean-Luc Canela jlcane...@gmail.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Resizing images
Thanks! I tried JAI before but couldn't get it to work in Scala. I'm a much better Scala programmer now, though, so maybe I'll give it another look. Do you think it has any advantages of the other methods mentioned (imageio and jmagick)? Have you actually made it work in Lift? Chas. Alexander Kellett wrote: i used jai in the past, a quick google let me to http://www.digitalsanctuary.com/tech-blog/java/how-to-resize-uploaded-images-using-java-better-way.html On Thu, Apr 16, 2009 at 11:10 AM, Jean-Luc jlcane...@gmail.com wrote: Imagemagick is said to be very efficient for image processing. http://www.imagemagick.org/script/api.php#java If you develop with MacOSX, some people had some compile issues with JMagick and have prefered a more direct solution using exec : http://www.darcynorman.net/2005/03/15/jai-vs-imagemagick-image-resizing/ Jean-Luc 2009/4/16 Charles F. Munat c...@munat.com The Georgia Association of Editors? That's good to know. (Unfortunately, the app is already built and running on my own server and I have no time to play with GAE right now. But I'm getting more and more curious about it.) It's funny. I would think that lots of people would be resizing uploaded images in Java, but I've asked this question before and got nothing. Ruby/Rails folks do this sort of thing all the time with RMagick (and half a dozen other tools). What the heck do Java developers do? Thanks, Viktor! Chas. Viktor Klang wrote: On Thu, Apr 16, 2009 at 7:36 AM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: Has anyone here done anything with Lift in which uploaded images are resized (or otherwise manipulated) before saving? If so, how did you do it? Any recommendations for libraries? GAE offers that kind of functionality. Thanks! Chas. -- Viktor Klang Senior Systems Analyst -- Jean-Luc Canela jlcane...@gmail.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Resizing images
What do you mean by pure java implementation vs. optimized native code? Chas. Derek Chen-Becker wrote: Yes, I take back my recommendation for it. I didn't realize just how bad it was, but here's a good article on it: http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html JAI works well, but adds a dependency. One note on performance: We have found in our testing that the pure java impl of JAI actually outperforms the optimized native code by quite a bit for most common operations like scaling, transforms, crops, etc. Derek On Thu, Apr 16, 2009 at 1:43 PM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: This is very helpful. I'm glad to hear that others are doing this. I read, however, that getScaledInstance is slow. Probably not a huge issue since uploaded images will be infrequent... Thanks for the help! Chas. Derek Chen-Becker wrote: Jai or just Java2D would work. I use JAI a lot at work (wrote a large-scale image rendering and compositing application), so if you run into issues there just ask. JAI can be somewhat heavy if you have simple requirements, so you could also just use the Image.getScaledInstance method, which is far simpler. For example: import java.awt.{Image,Tookit} val imageData : Array[Byte] = ... val scaled = Toolkit.getDefaultToolkit.createImage(imageData).getScaledUInstace(width, height, Image.SCALE_SMOOTH) The final param controls which algorithm to use for scaling, so you can use several as defined on the java.awt.Image class. Derek On Thu, Apr 16, 2009 at 5:59 AM, Alexander Kellett lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com wrote: i used jai in the past, a quick google let me to http://www.digitalsanctuary.com/tech-blog/java/how-to-resize-uploaded-images-using-java-better-way.html On Thu, Apr 16, 2009 at 11:10 AM, Jean-Luc jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com wrote: Imagemagick is said to be very efficient for image processing. http://www.imagemagick.org/script/api.php#java If you develop with MacOSX, some people had some compile issues with JMagick and have prefered a more direct solution using exec : http://www.darcynorman.net/2005/03/15/jai-vs-imagemagick-image-resizing/ Jean-Luc 2009/4/16 Charles F. Munat c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com The Georgia Association of Editors? That's good to know. (Unfortunately, the app is already built and running on my own server and I have no time to play with GAE right now. But I'm getting more and more curious about it.) It's funny. I would think that lots of people would be resizing uploaded images in Java, but I've asked this question before and got nothing. Ruby/Rails folks do this sort of thing all the time with RMagick (and half a dozen other tools). What the heck do Java developers do? Thanks, Viktor! Chas. Viktor Klang wrote: On Thu, Apr 16, 2009 at 7:36 AM, Charles F. Munat c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com wrote: Has anyone here done anything with Lift in which uploaded images are resized (or otherwise manipulated) before saving? If so, how did you do it? Any recommendations for libraries? GAE offers that kind of functionality. Thanks! Chas. -- Viktor Klang Senior Systems Analyst -- Jean-Luc Canela jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com
[Lift] Re: Resizing images
I'm down with that. I tried adding this to my pom: dependency groupIdjavax.media/groupId artifactIdjai_core/artifactId version1.1.2_01/version /dependency But I got this: Failed to resolve artifact. Missing: -- 1) javax.media:jai_core:jar:1.1.2_01 Anyone know how to pull this in via Maven? Chas. Derek Chen-Becker wrote: If you use JAI there are three implementations: one is pure java code and will run anywhere. There are two more versions that use JNI to provide optimized versions of some of the ops. We found that using the native (MMX, I think) code under Linux and Windows was significantly slower (order of magnitude or more) than just using the impl without native libraries. I can dig up timing results if you want, but for something as simple as scaling I think it would be better to just use the pure java version. Derek On Thu, Apr 16, 2009 at 3:08 PM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: What do you mean by pure java implementation vs. optimized native code? Chas. Derek Chen-Becker wrote: Yes, I take back my recommendation for it. I didn't realize just how bad it was, but here's a good article on it: http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html JAI works well, but adds a dependency. One note on performance: We have found in our testing that the pure java impl of JAI actually outperforms the optimized native code by quite a bit for most common operations like scaling, transforms, crops, etc. Derek On Thu, Apr 16, 2009 at 1:43 PM, Charles F. Munat c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com wrote: This is very helpful. I'm glad to hear that others are doing this. I read, however, that getScaledInstance is slow. Probably not a huge issue since uploaded images will be infrequent... Thanks for the help! Chas. Derek Chen-Becker wrote: Jai or just Java2D would work. I use JAI a lot at work (wrote a large-scale image rendering and compositing application), so if you run into issues there just ask. JAI can be somewhat heavy if you have simple requirements, so you could also just use the Image.getScaledInstance method, which is far simpler. For example: import java.awt.{Image,Tookit} val imageData : Array[Byte] = ... val scaled = Toolkit.getDefaultToolkit.createImage(imageData).getScaledUInstace(width, height, Image.SCALE_SMOOTH) The final param controls which algorithm to use for scaling, so you can use several as defined on the java.awt.Image class. Derek On Thu, Apr 16, 2009 at 5:59 AM, Alexander Kellett lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com wrote: i used jai in the past, a quick google let me to http://www.digitalsanctuary.com/tech-blog/java/how-to-resize-uploaded-images-using-java-better-way.html On Thu, Apr 16, 2009 at 11:10 AM, Jean-Luc jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com wrote: Imagemagick is said to be very efficient for image processing. http://www.imagemagick.org/script/api.php#java If you develop with MacOSX, some people had some compile issues with JMagick and have prefered a more direct solution using exec : http://www.darcynorman.net/2005/03/15/jai-vs-imagemagick-image-resizing/ Jean-Luc 2009/4/16 Charles F. Munat c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com The Georgia Association of Editors? That's good to know. (Unfortunately, the app is already built and running on
[Lift] Re: Resizing images
I don't know that it's in maven. A lot of sun libraries aren't distributable via Maven due to licensing. Derek On Thu, Apr 16, 2009 at 4:54 PM, Charles F. Munat c...@munat.com wrote: I'm down with that. I tried adding this to my pom: dependency groupIdjavax.media/groupId artifactIdjai_core/artifactId version1.1.2_01/version /dependency But I got this: Failed to resolve artifact. Missing: -- 1) javax.media:jai_core:jar:1.1.2_01 Anyone know how to pull this in via Maven? Chas. Derek Chen-Becker wrote: If you use JAI there are three implementations: one is pure java code and will run anywhere. There are two more versions that use JNI to provide optimized versions of some of the ops. We found that using the native (MMX, I think) code under Linux and Windows was significantly slower (order of magnitude or more) than just using the impl without native libraries. I can dig up timing results if you want, but for something as simple as scaling I think it would be better to just use the pure java version. Derek On Thu, Apr 16, 2009 at 3:08 PM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: What do you mean by pure java implementation vs. optimized native code? Chas. Derek Chen-Becker wrote: Yes, I take back my recommendation for it. I didn't realize just how bad it was, but here's a good article on it: http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html JAI works well, but adds a dependency. One note on performance: We have found in our testing that the pure java impl of JAI actually outperforms the optimized native code by quite a bit for most common operations like scaling, transforms, crops, etc. Derek On Thu, Apr 16, 2009 at 1:43 PM, Charles F. Munat c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com wrote: This is very helpful. I'm glad to hear that others are doing this. I read, however, that getScaledInstance is slow. Probably not a huge issue since uploaded images will be infrequent... Thanks for the help! Chas. Derek Chen-Becker wrote: Jai or just Java2D would work. I use JAI a lot at work (wrote a large-scale image rendering and compositing application), so if you run into issues there just ask. JAI can be somewhat heavy if you have simple requirements, so you could also just use the Image.getScaledInstance method, which is far simpler. For example: import java.awt.{Image,Tookit} val imageData : Array[Byte] = ... val scaled = Toolkit.getDefaultToolkit.createImage(imageData).getScaledUInstace(width, height, Image.SCALE_SMOOTH) The final param controls which algorithm to use for scaling, so you can use several as defined on the java.awt.Image class. Derek On Thu, Apr 16, 2009 at 5:59 AM, Alexander Kellett lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com wrote: i used jai in the past, a quick google let me to http://www.digitalsanctuary.com/tech-blog/java/how-to-resize-uploaded-images-using-java-better-way.html On Thu, Apr 16, 2009 at 11:10 AM, Jean-Luc jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com mailto:jlcane...@gmail.com wrote: Imagemagick is said to be very efficient for image processing. http://www.imagemagick.org/script/api.php#java If you develop with MacOSX, some people had some compile issues with JMagick and have prefered a more direct solution using exec : http://www.darcynorman.net/2005/03/15/jai-vs-imagemagick-image-resizing/ Jean-Luc 2009/4/16 Charles F. Munat c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com
[Lift] Re: Resizing images
Yeah, I'm pretty sure it's not. Weirdly, it's listed, but when you drill down, there's no jar there. But it's not clear whether it's already available on the system. And finding the damn jar is provide (as always) to be nearly impossible. I'll post if I find it. Chas. Derek Chen-Becker wrote: I don't know that it's in maven. A lot of sun libraries aren't distributable via Maven due to licensing. Derek On Thu, Apr 16, 2009 at 4:54 PM, Charles F. Munat c...@munat.com mailto:c...@munat.com wrote: I'm down with that. I tried adding this to my pom: dependency groupIdjavax.media/groupId artifactIdjai_core/artifactId version1.1.2_01/version /dependency But I got this: Failed to resolve artifact. Missing: -- 1) javax.media:jai_core:jar:1.1.2_01 Anyone know how to pull this in via Maven? Chas. Derek Chen-Becker wrote: If you use JAI there are three implementations: one is pure java code and will run anywhere. There are two more versions that use JNI to provide optimized versions of some of the ops. We found that using the native (MMX, I think) code under Linux and Windows was significantly slower (order of magnitude or more) than just using the impl without native libraries. I can dig up timing results if you want, but for something as simple as scaling I think it would be better to just use the pure java version. Derek On Thu, Apr 16, 2009 at 3:08 PM, Charles F. Munat c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com wrote: What do you mean by pure java implementation vs. optimized native code? Chas. Derek Chen-Becker wrote: Yes, I take back my recommendation for it. I didn't realize just how bad it was, but here's a good article on it: http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html JAI works well, but adds a dependency. One note on performance: We have found in our testing that the pure java impl of JAI actually outperforms the optimized native code by quite a bit for most common operations like scaling, transforms, crops, etc. Derek On Thu, Apr 16, 2009 at 1:43 PM, Charles F. Munat c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com mailto:c...@munat.com wrote: This is very helpful. I'm glad to hear that others are doing this. I read, however, that getScaledInstance is slow. Probably not a huge issue since uploaded images will be infrequent... Thanks for the help! Chas. Derek Chen-Becker wrote: Jai or just Java2D would work. I use JAI a lot at work (wrote a large-scale image rendering and compositing application), so if you run into issues there just ask. JAI can be somewhat heavy if you have simple requirements, so you could also just use the Image.getScaledInstance method, which is far simpler. For example: import java.awt.{Image,Tookit} val imageData : Array[Byte] = ... val scaled = Toolkit.getDefaultToolkit.createImage(imageData).getScaledUInstace(width, height, Image.SCALE_SMOOTH) The final param controls which algorithm to use for scaling, so you can use several as defined on the java.awt.Image class. Derek On Thu, Apr 16, 2009 at 5:59 AM, Alexander Kellett lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com mailto:lypa...@gmail.com wrote: