Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #34407

Re: Bash script with Image Magick to a Java program

From Martin Gregorie <martin@address-in-sig.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: Bash script with Image Magick to a Java program
Date 2016-05-27 18:02 +0000
Organization A noiseless patient Spider
Message-ID <nia246$9g1$1@dont-email.me> (permalink)
References (1 earlier) <ni8a27$t0j$1@gioia.aioe.org> <8760tz50qf.fsf@Equus.decebal.nl> <ni95r3$19j$1@dont-email.me> <871t4n4u12.fsf@Equus.decebal.nl> <nia17p$8ju$1@dont-email.me>

Show all headers | View raw


On Fri, 27 May 2016 18:51:16 +0100, Duncan Idaho wrote:

> On 27/05/16 12:31, Cecil Westerhof wrote:
>> On Friday 27 May 2016 12:00 CEST, Martin Gregorie wrote:
>>
>>> On Fri, 27 May 2016 11:06:16 +0200, Cecil Westerhof wrote:
>>>
>>>> I evaluate things. Maybe I start with the standard library and as my
>>>> program evolves I switch. At the moment I know nothing about
>>>> graphical functionality in Java.
>>>>
>>> Whether the standard image classes in java.awt.image will do the job
>>> for you depends on the image source. I use it to produce thumbnails of
>>> JPG images but find that it can't correctly handle some JPGs from some
>>> sources. These are always B&W images, which result in a thumbnail of
>>> the correct requested size but distorted by being broken into vertical
>>> stripes separated by white 'bars' and, typically with the right-hand
>>> 1/3 or so of the original image not appearing in the thumbnail
>>> version.
>>
>> Well, I only work with color JPG files. ;-)
>>
>>
>>> This seems to be a deficiency in the Java library since the GIMP image
>>> manipulation program doesn't show this problem. I haven't tried Image
>>> Magik on these images so don't know what it would do.
>>>
>>> Starting with the standard class library and only moving on if you
>>> find things it can't do sounds like a good plot.
>>>
>>> My only other comment is that the documentation for the standard image
>>> library does rather assume that you are already up to speed on image
>>> manipulation and so you know what affine transforms, etc. are and why
>>> you should use each type of operation on an image and in what order.
>>> This isn't covered in the Java tutorials and there are no references
>>> to this sort of basic information.
> 
> Just FYI
> 
> I use the following Java libraries
> 
> java.awt.Graphics;
> java.awt.Image;
> java.awt.image.BufferedImage;
> javax.imageio.ImageIO;
> javax.swing.ImageIcon;
> 
> plus some standard libraries.
> 
> along with the
> 
> org.apache.commons.fileupload
> 
> libraries
> 
> To upload, scale and generate thumbnails and large images in jpg format
> for use in my home brewed Content Management System My source images are
> cropped square to a random convenient size.
> 
> I have scaled tens of thousands of images and generated tens of
> thousands of thumbnails over the last five or so years with not a single
> problem
> 
> The code hasn't been touched for many years, I can't even remember
> writing most of it :-)
> it's used almost every day.
> 
> I'll let you have the code if you like.
> It could do with refactoring I expect, like I say it hasn't been touched
> for years.
> 
> <snip>
> 
> Idaho

I'm using:
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageFilter;
import java.awt.image.BufferedImageOp;
import java.awt.image.RescaleOp;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import javax.imageio.ImageIO;
import org.gregorie.environ.ReportError;

... but obviously not all of them are being used to resize an image. 
Here's the code:

   public void resizeTo(int width)
   {
      re.trace(2, "resizeTo(" + width + ") started");
      int w = im.getWidth();
      int h = im.getHeight();
      double scale = width * 1.0 / w;
      
      if (noExpand && scale >= 1.0)
      {
         wouldExpand = true;
         re.trace(2, "Image is smaller than " + width +
                     " wide: original size will be output");
      }
      else
      {
         wouldExpand = false;
         AffineTransform at = new AffineTransform();
         at.scale(scale, scale);
         AffineTransformOp op = new AffineTransformOp(at,
                                         AffineTransformOp.TYPE_BICUBIC);
         Double nw = new Double(w * scale);
         Double nh = new Double(h * scale);
         re.trace(2, "scale=" + scale +
                     " new size w=" + nw.intValue() +
                     " h=" + nh.intValue());
         re.trace(3, "Source buffer details: " + im);
         om = new BufferedImage(nw.intValue(),
                                nh.intValue(),
                                BufferedImage.TYPE_3BYTE_BGR);
         op.filter(im, om);
      }

      re.trace(1, "resizeTo(" + width + ") done");
   }

The re.trace() calls are to my private traceing/debugging class


-- 
martin@   | Martin Gregorie
gregorie. | Essex, UK
org       |

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Bash script with Image Magick to a Java program Cecil Westerhof <Cecil@decebal.nl> - 2016-05-27 00:42 +0200
  Re: Bash script with Image Magick to a Java program Jerry Stuckle <jstucklex@attglobal.net> - 2016-05-26 20:45 -0400
    Re: Bash script with Image Magick to a Java program Cecil Westerhof <Cecil@decebal.nl> - 2016-05-27 11:01 +0200
  Re: Bash script with Image Magick to a Java program Arne Vajhøj <arne@vajhoej.dk> - 2016-05-26 22:06 -0400
    Re: Bash script with Image Magick to a Java program Cecil Westerhof <Cecil@decebal.nl> - 2016-05-27 11:06 +0200
      Re: Bash script with Image Magick to a Java program Martin Gregorie <martin@address-in-sig.invalid> - 2016-05-27 10:00 +0000
        Re: Bash script with Image Magick to a Java program Cecil Westerhof <Cecil@decebal.nl> - 2016-05-27 13:31 +0200
          Re: Bash script with Image Magick to a Java program Eric Douglas <e.d.programmer@gmail.com> - 2016-05-27 05:15 -0700
            Re: Bash script with Image Magick to a Java program Cecil Westerhof <Cecil@decebal.nl> - 2016-05-27 15:18 +0200
          Re: Bash script with Image Magick to a Java program Duncan Idaho <duncan@dunenoemail.com> - 2016-05-27 18:51 +0100
            Re: Bash script with Image Magick to a Java program Martin Gregorie <martin@address-in-sig.invalid> - 2016-05-27 18:02 +0000
              Re: Bash script with Image Magick to a Java program Cecil Westerhof <Cecil@decebal.nl> - 2016-05-27 23:23 +0200
            Re: Bash script with Image Magick to a Java program Cecil Westerhof <Cecil@decebal.nl> - 2016-05-27 23:18 +0200
              Re: Bash script with Image Magick to a Java program Duncan Idaho <duncan@dunenoemail.com> - 2016-05-28 08:03 +0100
      Re: Bash script with Image Magick to a Java program Arne Vajhøj <arne@vajhoej.dk> - 2016-05-27 17:59 -0400
  Re: Bash script with Image Magick to a Java program Brixomatic <brixomatic@yahoo.com> - 2016-05-29 17:28 +0200
  Re: Bash script with Image Magick to a Java program Eric Douglas <e.d.programmer@gmail.com> - 2016-06-14 10:25 -0700

csiph-web