Here you can find the source of scaleBarcodeMaxWidth(Image i, int width, int cropHeigth)
Parameter | Description |
---|---|
i | a parameter |
width | a parameter |
cropHeigth | a parameter |
public static BufferedImage scaleBarcodeMaxWidth(Image i, int width, int cropHeigth)
//package com.java2s; //License from project: Open Source License import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.HeadlessException; import java.awt.Image; import java.awt.Transparency; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; public class Main { /**/*w ww . j a v a2 s .com*/ * Scales if Image is wider, Crops if image is higer. Suitable for barcode. * * @param i * @param width * @param cropHeigth * @return */ public static BufferedImage scaleBarcodeMaxWidth(Image i, int width, int cropHeigth) { BufferedImage ret; int newWidth; int newHeigth; boolean scale; boolean crop; int iWidth = i.getWidth(null); int iHeigth = i.getHeight(null); if (iWidth == -1 || iWidth > width) { newWidth = width; scale = true; } else { newWidth = iWidth; scale = false; } if (iHeigth == -1 || iHeigth > cropHeigth) { newHeigth = cropHeigth; crop = true; } else { newHeigth = iHeigth; crop = false; } if (scale) { ret = toBufferedImage(i.getScaledInstance(newWidth, newHeigth, Image.SCALE_SMOOTH)); } else { ret = toBufferedImage(i); } if (crop) { BufferedImage outImage = toBufferedImage(ret); ret = outImage.getSubimage(0, 0, outImage.getWidth(), cropHeigth); } return ret; } public static BufferedImage toBufferedImage(Image image) { if (image instanceof BufferedImage) { return (BufferedImage) image; } // This code ensures that all the pixels in the image are loaded image = new ImageIcon(image).getImage(); // Determine if the image has transparent pixels; for this method's // implementation, see e661 Determining If an Image Has Transparent Pixels boolean hasAlpha = hasAlpha(image); //boolean hasAlpha = false; // Create a buffered image with a format that's compatible with the screen BufferedImage bimage = null; GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); try { // Determine the type of transparency of the new buffered image int transparency = Transparency.OPAQUE; if (hasAlpha) { transparency = Transparency.BITMASK; } // Create the buffered image GraphicsDevice gs = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gs.getDefaultConfiguration(); bimage = gc.createCompatibleImage(image.getWidth(null), image.getHeight(null), transparency); } catch (HeadlessException e) { // The system does not have a screen } if (bimage == null) { // Create a buffered image using the default color model // int type = BufferedImage.TYPE_INT_RGB; int type = BufferedImage.TYPE_BYTE_BINARY; if (hasAlpha) { type = BufferedImage.TYPE_INT_ARGB; } bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type); } // Copy image to buffered image Graphics g = bimage.createGraphics(); // Paint the image onto the buffered image g.drawImage(image, 0, 0, null); g.dispose(); return bimage; } public static boolean hasAlpha(Image image) { // If buffered image, the color model is readily available return false; // if (image instanceof BufferedImage) { // BufferedImage bimage = (BufferedImage) image; // return bimage.getColorModel().hasAlpha(); // } // // // Use a pixel grabber to retrieve the image's color model; // // grabbing a single pixel is usually sufficient // PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false); // try { // pg.grabPixels(); // } catch (InterruptedException e) { // } // // // Get the image's color model // ColorModel cm = pg.getColorModel(); // return cm.hasAlpha(); } }