List of usage examples for java.awt.image BufferedImage getWidth
public int getWidth()
From source file:kz.supershiny.core.services.ImageService.java
/** * Creates thumb for image./*from w w w .j av a2 s . c o m*/ * * @param originalData original image in byte array * @param type original - 0, large - 1, small - 2 * @return resized image in byte array */ public static byte[] resizeImage(byte[] originalData, ImageSize type) { //if original flag, then return original if (type.equals(ImageSize.ORIGINAL)) { return originalData; } BufferedImage originalImage = null; BufferedImage resizedImage = null; byte[] result = null; //convert bytes to BufferedImage try (InputStream in = new ByteArrayInputStream(originalData)) { originalImage = ImageIO.read(in); } catch (IOException ex) { LOG.error("Cannot convert byte array to BufferedImage!", ex); return null; } //get original size int scaledHeight = originalImage.getHeight(); int scaledWidth = originalImage.getWidth(); switch (type) { case LARGE: scaledWidth = LARGE_WIDTH; scaledHeight = LARGE_HEIGHT; break; case SMALL: scaledWidth = SMALL_WIDTH; scaledHeight = SMALL_HEIGHT; break; default: break; } //calculate aspect ratio float ratio = 1.0F * originalImage.getWidth() / originalImage.getHeight(); if (ratio > 1.0F) { scaledHeight = (int) (scaledHeight / ratio); } else { scaledWidth = (int) (scaledWidth * ratio); } //resize with hints resizedImage = new BufferedImage(scaledWidth, scaledHeight, originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType()); Graphics2D g = resizedImage.createGraphics(); g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); g.dispose(); g.setComposite(AlphaComposite.Src); g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //convert BufferedImage to bytes try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { ImageIO.write(resizedImage, "png", baos); baos.flush(); result = baos.toByteArray(); } catch (IOException ex) { LOG.error("Cannot convert BufferedImage to byte array!", ex); } return result; }
From source file:com.simiacryptus.util.Util.java
/** * Resize buffered image.// w w w . j a v a 2 s. co m * * @param image the image * @return the buffered image */ @Nullable public static BufferedImage resize(@Nullable final BufferedImage image) { if (null == image) return image; final int width = Math.min(image.getWidth(), 800); if (width == image.getWidth()) return image; final int height = image.getHeight() * width / image.getWidth(); @javax.annotation.Nonnull final BufferedImage rerender = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); final Graphics gfx = rerender.getGraphics(); @javax.annotation.Nonnull final RenderingHints hints = new RenderingHints(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); ((Graphics2D) gfx).setRenderingHints(hints); gfx.drawImage(image, 0, 0, rerender.getWidth(), rerender.getHeight(), null); return rerender; }
From source file:com.simiacryptus.mindseye.applications.ArtistryUtil.java
/** * Paint lines./* w ww . j a va2s. com*/ * * @param canvas the canvas */ public static void paint_Lines(final Tensor canvas) { BufferedImage originalImage = canvas.toImage(); BufferedImage newImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D graphics = (Graphics2D) newImage.getGraphics(); IntStream.range(0, 100).forEach(i -> { Random random = new Random(); graphics.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255))); graphics.drawLine(random.nextInt(originalImage.getWidth()), random.nextInt(originalImage.getHeight()), random.nextInt(originalImage.getWidth()), random.nextInt(originalImage.getHeight())); }); canvas.set(Tensor.fromRGB(newImage)); }
From source file:net.rptools.lib.image.ImageUtil.java
public static int pickBestTransparency(BufferedImage image) { // See if we can short circuit ColorModel colorModel = image.getColorModel(); if (colorModel.getTransparency() == Transparency.OPAQUE) { return Transparency.OPAQUE; }//from w w w .jav a 2 s . co m // Get the pixels int width = image.getWidth(); int height = image.getHeight(); // Look for specific pixels boolean foundTransparent = false; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { // Get the next pixel int pixel = image.getRGB(x, y); int alpha = (pixel >> 24) & 0xff; // Is there translucency or just pure transparency ? if (alpha > 0 && alpha < 255) { return Transparency.TRANSLUCENT; } if (alpha == 0 && !foundTransparent) { foundTransparent = true; } } } return foundTransparent ? Transparency.BITMASK : Transparency.OPAQUE; }
From source file:net.rptools.lib.image.ImageUtil.java
public static void clearImage(BufferedImage image) { if (image == null) return;/* w ww . ja va 2s. c om*/ Graphics2D g = null; try { g = (Graphics2D) image.getGraphics(); Composite oldComposite = g.getComposite(); g.setComposite(AlphaComposite.Clear); g.fillRect(0, 0, image.getWidth(), image.getHeight()); g.setComposite(oldComposite); } finally { if (g != null) { g.dispose(); } } }
From source file:de.fhg.igd.swingrcp.SwingRCPUtilities.java
/** * Convert a {@link BufferedImage} to a SWT Image. * /*from www. ja v a 2 s .c o m*/ * {@link "http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet156.java?view=co"} * * @param bufferedImage the AWT {@link BufferedImage} * @return the SWT {@link ImageData} */ public static ImageData convertToSWT(BufferedImage bufferedImage) { if (bufferedImage.getColorModel() instanceof DirectColorModel) { DirectColorModel colorModel = (DirectColorModel) bufferedImage.getColorModel(); PaletteData palette = new PaletteData(colorModel.getRedMask(), colorModel.getGreenMask(), colorModel.getBlueMask()); ImageData data = new ImageData(bufferedImage.getWidth(), bufferedImage.getHeight(), colorModel.getPixelSize(), palette); for (int y = 0; y < data.height; y++) { for (int x = 0; x < data.width; x++) { int rgb = bufferedImage.getRGB(x, y); int pixel = palette.getPixel(new RGB((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF)); data.setPixel(x, y, pixel); // also set the alpha value (ST) data.setAlpha(x, y, colorModel.getAlpha(rgb)); } } return data; } else if (bufferedImage.getColorModel() instanceof IndexColorModel) { IndexColorModel colorModel = (IndexColorModel) bufferedImage.getColorModel(); int size = colorModel.getMapSize(); byte[] reds = new byte[size]; byte[] greens = new byte[size]; byte[] blues = new byte[size]; colorModel.getReds(reds); colorModel.getGreens(greens); colorModel.getBlues(blues); RGB[] rgbs = new RGB[size]; for (int i = 0; i < rgbs.length; i++) { rgbs[i] = new RGB(reds[i] & 0xFF, greens[i] & 0xFF, blues[i] & 0xFF); } PaletteData palette = new PaletteData(rgbs); ImageData data = new ImageData(bufferedImage.getWidth(), bufferedImage.getHeight(), colorModel.getPixelSize(), palette); data.transparentPixel = colorModel.getTransparentPixel(); WritableRaster raster = bufferedImage.getRaster(); int[] pixelArray = new int[1]; for (int y = 0; y < data.height; y++) { for (int x = 0; x < data.width; x++) { raster.getPixel(x, y, pixelArray); data.setPixel(x, y, pixelArray[0]); } } return data; } return null; }
From source file:com.t3.image.ImageUtil.java
public static int pickBestTransparency(BufferedImage image) { // See if we can short circuit ColorModel colorModel = image.getColorModel(); if (colorModel.getTransparency() == Transparency.OPAQUE) { return Transparency.OPAQUE; }//ww w . j av a2 s .c om // Get the pixels int width = image.getWidth(); int height = image.getHeight(); // Look for specific pixels boolean foundTransparent = false; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { // Get the next pixel int pixel = image.getRGB(x, y); int alpha = (pixel >> 24) & 0xff; // Is there translucency or just pure transparency ? if (alpha > 0 && alpha < 255) { return Transparency.TRANSLUCENT; } if (alpha == 0 && !foundTransparent) { foundTransparent = true; } } } return foundTransparent ? Transparency.BITMASK : Transparency.OPAQUE; }
From source file:Hexagon.java
public static void drawImage(Graphics g, BufferedImage img, Align align) { drawImage(g, img, align, img.getWidth(), img.getHeight(), null); }
From source file:cn.z.Ocr5.java
public static BufferedImage removeBackgroud(File picFile) throws Exception { BufferedImage img = ImageIO.read(picFile); final int width = img.getWidth(); final int height = img.getHeight(); // int blackThreshold = 300; // img.getMinX() img.getMinY() for (int x = img.getMinX(); x < width; x++) { for (int y = img.getMinY(); y < height; y++) { Color color = new Color(img.getRGB(x, y)); if ((color.getBlue() < 120) || ((color.getRed() + color.getGreen() + color.getBlue()) < 50)) { // img.setRGB(x, y, Color.WHITE.getRGB()); } else if ((color.getRed() + color.getGreen() + color.getBlue()) < 400) { img.setRGB(x, y, Color.BLACK.getRGB()); }/*ww w . jav a 2s . com*/ int nearly = 0; int vertical = 0; int horizontal = 0; if (x > 0) { Color leftColor = new Color(img.getRGB(x - 1, y)); if ((leftColor.getRed() + leftColor.getGreen() + leftColor.getBlue()) < 400) { nearly++; horizontal++; } } if (x < width - 1) { Color rightColor = new Color(img.getRGB(x + 1, y)); if ((rightColor.getRed() + rightColor.getGreen() + rightColor.getBlue()) < 400) { nearly++; horizontal++; } } if (y > 0) { Color topColor = new Color(img.getRGB(x, y - 1)); if ((topColor.getRed() + topColor.getGreen() + topColor.getBlue()) < 400) { nearly++; vertical++; } } if (y < height - 1) { Color bottomColor = new Color(img.getRGB(x, y + 1)); if ((bottomColor.getRed() + bottomColor.getGreen() + bottomColor.getBlue()) < 400) { nearly++; vertical++; } } if (x > 0 && y > 0) { Color leftTopColor = new Color(img.getRGB(x - 1, y - 1)); if ((leftTopColor.getRed() + leftTopColor.getGreen() + leftTopColor.getBlue()) < 400) { nearly++; } } if (x < width - 1 && y < height - 1) { Color rightBottomColor = new Color(img.getRGB(x + 1, y + 1)); if ((rightBottomColor.getRed() + rightBottomColor.getGreen() + rightBottomColor.getBlue()) < 400) { nearly++; } } if (x < width - 1 && y > 0) { Color rightTopColor = new Color(img.getRGB(x + 1, y - 1)); if ((rightTopColor.getRed() + rightTopColor.getGreen() + rightTopColor.getBlue()) < 400) { nearly++; } } if (x > 0 && y < height - 1) { Color leftBottomColor = new Color(img.getRGB(x - 1, y + 1)); if ((leftBottomColor.getRed() + leftBottomColor.getGreen() + leftBottomColor.getBlue()) < 400) { nearly++; } } if (nearly < 2) { img.setRGB(x, y, Color.WHITE.getRGB()); } /* if (horizontal < 1 && vertical > 0) { img.setRGB(x, y, Color.WHITE.getRGB()); } if (horizontal > 0 && vertical < 1) { img.setRGB(x, y, Color.WHITE.getRGB()); } */ /* if (isWhite(img.getRGB(x, y), whiteThreshold) == 1) { img.setRGB(x, y, Color.WHITE.getRGB()); } else { img.setRGB(x, y, Color.BLACK.getRGB()); } if (getColorBright(img.getRGB(x, y)) < 100) { int count = isBlack(img.getRGB(x - 1, y), blackThreshold) + isBlack(img.getRGB(x + 1, y), blackThreshold) + isBlack(img.getRGB(x, y - 1), blackThreshold) + isBlack(img.getRGB(x, y + 1), blackThreshold) + isBlack(img.getRGB(x + 1, y + 1), blackThreshold) + isBlack(img.getRGB(x - 1, y - 1), blackThreshold) + isBlack(img.getRGB(x + 1, y -1 ), blackThreshold) + isBlack(img.getRGB(x - 1, y + 1), blackThreshold); System.out.println(count); if (count < 2) { img.setRGB(x, y, Color.WHITE.getRGB()); } // img.setRGB(x, y, Color.WHITE.getRGB()); } */ // if(getColorBright(img.getRGB(x, y)) > 600) { // img.setRGB(x, y, Color.WHITE.getRGB()); // } else { // /* // // ?Graphics2D // Graphics2D g2d = img.createGraphics(); // // ? // // 1.0f? 0-1.0???? // g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1.0f)); // // // g2d.setColor(new Color(255,0,0)); // g2d.setStroke(new BasicStroke(1)); // // g2d.draw // // // // ? ? // g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); // g2d.dispose(); // */ // // img.setRGB(x, y, Color.BLACK.getRGB()); // /* // System.out.println(getColorBright(img.getRGB(x, y)) + ":"); // System.out.println(getColorBright(img.getRGB(x + 1, y)) + "-" + getColorBright(img.getRGB(x + 1, y + 1)) + "-" + getColorBright(img.getRGB(x, y + 1))); // System.out.println(getColorBright(img.getRGB(x - 1, y)) + "-" + getColorBright(img.getRGB(x - 1, y - 1)) + "-" + getColorBright(img.getRGB(x, y - 1))); // System.out.println(getColorBright(img.getRGB(x - 1, y + 1)) + "-" + getColorBright(img.getRGB(x + 1, y - 1))); // */ // // /* // int i = 0; // i = ((x < width - 1) && getColorBright(img.getRGB(x + 1, y)) < 30)? i + 1 : i; // i = ((x < width - 1) && (y < height - 1) && getColorBright(img.getRGB(x + 1, y + 1)) < 30)? i + 1 : i; // i = ((y < height - 1) && getColorBright(img.getRGB(x, y + 1)) < 30)? i + 1 : i; // i = ((x > 0) && getColorBright(img.getRGB(x - 1, y)) < 30)? i + 1 : i; // i = ((x > 0) && (y > 0) && getColorBright(img.getRGB(x - 1, y - 1)) < 30)? i + 1 : i; // i = ((y > 0) && getColorBright(img.getRGB(x, y - 1)) < 30)? i + 1 : i; // i = ((x < width - 1) && (y > 0) && getColorBright(img.getRGB(x + 1, y - 1)) < 30)? i + 1 : i; // i = ((x > 0) && (y < height - 1) && getColorBright(img.getRGB(x - 1, y + 1)) < 30)? i + 1 : i; // // if(i > 1) { // img.setRGB(x, y, Color.BLACK.getRGB()); // } else { // img.setRGB(x, y, Color.WHITE.getRGB()); // } // */ // } /* int i = 0; i = (getColorBright(img.getRGB(x + 1, y)) == 0)? i + 1 : i; i = (getColorBright(img.getRGB(x + 1, y + 1)) == 0)? i + 1 : i; i = (getColorBright(img.getRGB(x, y + 1)) == 0)? i + 1 : i; i = (getColorBright(img.getRGB(x - 1, y)) == 0)? i + 1 : i; i = (getColorBright(img.getRGB(x - 1, y - 1)) == 0)? i + 1 : i; i = (getColorBright(img.getRGB(x, y - 1)) == 0)? i + 1 : i; System.out.println(getColorBright(img.getRGB(x, y)) + ":"); System.out.println(getColorBright(img.getRGB(x + 1, y)) + "-" + getColorBright(img.getRGB(x + 1, y + 1)) + "-" + getColorBright(img.getRGB(x, y + 1))); System.out.println(getColorBright(img.getRGB(x - 1, y)) + "-" + getColorBright(img.getRGB(x - 1, y - 1)) + "-" + getColorBright(img.getRGB(x, y - 1))); System.out.println(getColorBright(img.getRGB(x - 1, y + 1)) + "-" + getColorBright(img.getRGB(x + 1, y - 1))); if(getColorBright(img.getRGB(x, y)) == 0 && i < 3) { img.setRGB(x, y, Color.WHITE.getRGB()); } */ /* // ?for???? // ??object Object data = img.getRaster().getDataElements(x, y, null); int red = img.getColorModel().getRed(data); int blue = img.getColorModel().getBlue(data); int green = img.getColorModel().getGreen(data); System.out.println((red + blue + green) + "-" + getColorBright(img.getRGB(x, y))); red = (red * 3 + green * 6 + blue * 1)/10; green = red; blue = green; // r?g?b?rgbbufferedImage????rgbrgb8388608?255*255*255?16777216 int rgb = (red * 256 + green) * 256 + blue; if(rgb > 8388608) { rgb = rgb - 16777216; } // rgb img.setRGB(x, y, rgb); */ } } // img = img.getSubimage(1, 1, img.getWidth() - 2, img.getHeight() - 2); return img; }
From source file:com.fluidops.iwb.deepzoom.DZConvert.java
/** * Gets an image containing the tile at the given row and column * for the given image./*from w w w . j a v a 2 s . c o m*/ * @param img - the input image from whihc the tile is taken * @param row - the tile's row (i.e. y) index * @param col - the tile's column (i.e. x) index */ private static BufferedImage getTile(BufferedImage img, int row, int col) { int x = col * tileSize - (col == 0 ? 0 : tileOverlap); int y = row * tileSize - (row == 0 ? 0 : tileOverlap); int w = tileSize + (col == 0 ? 1 : 2) * tileOverlap; int h = tileSize + (row == 0 ? 1 : 2) * tileOverlap; if (x + w > img.getWidth()) w = img.getWidth() - x; if (y + h > img.getHeight()) h = img.getHeight() - y; if (debugMode) System.out.printf("getTile: row=%d, col=%d, x=%d, y=%d, w=%d, h=%d%n", row, col, x, y, w, h); assert (w > 0); assert (h > 0); BufferedImage result = new BufferedImage(w, h, getType(img)); Graphics2D g = result.createGraphics(); g.drawImage(img, 0, 0, w, h, x, y, x + w, y + h, null); return result; }