/** * Gets pixel data of an <code>IIOImage</code> object. * * @param image an <code>IIOImage</code> object * @return a byte buffer of pixel data */ public static ByteBuffer getImageByteBuffer(IIOImage image) { return getImageByteBuffer(image.getRenderedImage()); }
/** * Convenience method that returns a scaled instance of the provided * {@code IIOImage}. * * @param iioSource the original image to be scaled * @param scale the desired scale * @return a scaled version of the original {@code IIOImage} */ public static IIOImage getScaledInstance(IIOImage iioSource, float scale) { if (!(iioSource.getRenderedImage() instanceof BufferedImage)) { throw new IllegalArgumentException("RenderedImage in IIOImage must be BufferedImage"); } if (Math.abs(scale - 1.0) < 0.001) { return iioSource; } BufferedImage source = (BufferedImage) iioSource.getRenderedImage(); BufferedImage target = getScaledInstance(source, (int) (scale * source.getWidth()), (int) (scale * source.getHeight())); return new IIOImage(target, null, null); }
protected final int getWidth(final IIOImage image) { return image.hasRaster() ? image.getRaster().getWidth() : image.getRenderedImage().getWidth(); }
protected final int getHeight(final IIOImage image) { return image.hasRaster() ? image.getRaster().getHeight() : image.getRenderedImage().getHeight(); }
/** * Performs OCR operation. * <br> * Note: <code>init()</code> and <code>setTessVariables()</code> must be * called before use; <code>dispose()</code> should be called afterwards. * * @param oimage an <code>IIOImage</code> object * @param filename input file name * @param rect the bounding rectangle defines the region of the image to be * recognized. A rectangle of zero dimension or <code>null</code> indicates * the whole image. * @param pageNum page number * @return the recognized text * @throws TesseractException */ private String doOCR(IIOImage oimage, String filename, Rectangle rect, int pageNum) throws TesseractException { String text = ""; try { setImage(oimage.getRenderedImage(), rect); text = getOCRText(filename, pageNum); } catch (IOException ioe) { // skip the problematic image logger.warn(ioe.getMessage(), ioe); } return text; }
/** * Performs OCR operation. * <br> * Note: <code>init()</code> and <code>setTessVariables()</code> must be * called before use; <code>dispose()</code> should be called afterwards. * * @param oimage an <code>IIOImage</code> object * @param filename input file nam * @param rect the bounding rectangle defines the region of the image to be * recognized. A rectangle of zero dimension or <code>null</code> indicates * the whole image. * @param pageNum page number * @return the recognized text * @throws TesseractException */ private String doOCR(IIOImage oimage, String filename, Rectangle rect, int pageNum) throws TesseractException { String text = ""; try { setImage(oimage.getRenderedImage(), rect); text = getOCRText(filename, pageNum); } catch (IOException ioe) { // skip the problematic image logger.warn(ioe.getMessage(), ioe); } return text; }
pageNum++; try { setImage(oimage.getRenderedImage(), rect); sb.append(getOCRText(filename, pageNum)); } catch (IOException ioe) {
pageNum++; try { setImage(oimage.getRenderedImage(), rect); sb.append(getOCRText(filename, pageNum)); } catch (IOException ioe) {
public void write(IIOMetadata pStreamMetadata, IIOImage pImage, ImageWriteParam pParam) throws IOException { assertOutput(); if (pImage.hasRaster()) { throw new UnsupportedOperationException("Cannot write raster"); } processImageStarted(0); // Prepare image data to be written ByteArrayOutputStream imageData = new FastByteArrayOutputStream(1024); packImageData(imageData, pImage.getRenderedImage(), pParam); //System.out.println("Image data: " + imageData.size()); // Write metadata writeMeta(pImage.getRenderedImage(), imageData.size()); // Write image data writeBody(imageData); processImageComplete(); }
if (dpiX != 0 && dpiY != 0) { ImageTypeSpecifier imageType = ImageTypeSpecifier.createFromRenderedImage(oimage.getRenderedImage()); ImageWriteParam param = writer.getDefaultWriteParam(); IIOMetadata imageMetadata = writer.getDefaultImageMetadata(imageType, param);
protected final int getNumBands(final IIOImage image) { return image.hasRaster() ? image.getRaster().getNumBands() : image.getRenderedImage().getSampleModel().getNumBands(); }
protected final int getTransferType(final IIOImage image) { return image.hasRaster() ? image.getRaster().getTransferType() : image.getRenderedImage().getSampleModel().getTransferType(); }
ImageTypeSpecifier imageType = ImageTypeSpecifier.createFromRenderedImage(iioImage.getRenderedImage()); ImageWriteParam param = writer.getDefaultWriteParam(); IIOMetadata imageMetadata = writer.getDefaultImageMetadata(imageType, param);
RenderedImage image = pImage.getRenderedImage(); writePICTHeader(image);
BufferedImage img = (BufferedImage) image.getRenderedImage();
private boolean isDestinationCMYK(final IIOImage image, final ImageWriteParam param) { // If destination type != null, rendered image type doesn't matter return !image.hasRaster() && image.getRenderedImage().getColorModel().getColorSpace().getType() == ColorSpace.TYPE_CMYK || param != null && param.getDestinationType() != null && param.getDestinationType().getColorModel().getColorSpace().getType() == ColorSpace.TYPE_CMYK; }
RenderedImage renderedImage = image.getRenderedImage(); TGAHeader header = TGAHeader.from(renderedImage, param);
private void writeImageData(final IIOImage image) throws IOException { // - dump data as is (or convert, if TYPE_INT_xxx) // Enforce RGB/CMYK order for such data! // TODO: Loop over x/y tiles, using 0,0 is only valid for BufferedImage // TODO: PNM/PAM does not support tiling, we must iterate all tiles along the x-axis for each row we write Raster tile = image.hasRaster() ? image.getRaster() : image.getRenderedImage().getTile(0, 0); SampleModel sampleModel = tile.getSampleModel(); DataBuffer dataBuffer = tile.getDataBuffer(); int tileWidth = tile.getWidth(); int tileHeight = tile.getHeight(); final int transferType = sampleModel.getTransferType(); Object data = null; for (int y = 0; y < tileHeight; y++) { data = sampleModel.getDataElements(0, y, tileWidth, 1, data, dataBuffer); // TODO: Support other (short, float) data types if (transferType == DataBuffer.TYPE_BYTE) { imageOutput.write((byte[]) data); } else if (transferType == DataBuffer.TYPE_USHORT) { short[] shortData = (short[]) data; imageOutput.writeShorts(shortData, 0, shortData.length); } processImageProgress(y * 100f / tileHeight); // TODO: Take tile y into account if (abortRequested()) { processWriteAborted(); break; } } }
RenderedImage renderedImage = image.getRenderedImage();
imageOutput.writeInt(IconResource.typeFromImage(image.getRenderedImage(), "PNG")); imageOutput.writeInt(0); // Size, update later