Example usage for java.awt.image BufferedImage flush

List of usage examples for java.awt.image BufferedImage flush

Introduction

In this page you can find the example usage for java.awt.image BufferedImage flush.

Prototype

public void flush() 

Source Link

Document

Flushes all reconstructable resources being used by this Image object.

Usage

From source file:org.niord.proxy.web.WmsProxyServlet.java

/**
 * Main GET method//from w ww  .  j  a  v  a 2  s.c  o  m
 * @param request servlet request
 * @param response servlet response
 */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

    // Cache for a day
    WebUtils.cache(response, CACHE_TIMEOUT);

    // Check that the WMS parameters have been specified
    if (StringUtils.isBlank(wmsServerUrl)) {
        response.sendRedirect(BLANK_IMAGE);
        return;
    }

    boolean layerParamDefined = wmsServerUrl.toLowerCase().contains("layers=");

    @SuppressWarnings("unchecked")
    Map<String, String[]> paramMap = request.getParameterMap();
    String params = paramMap.entrySet().stream()
            .filter(p -> !layerParamDefined || !"layers".equalsIgnoreCase(p.getKey()))
            .map(p -> String.format("%s=%s", p.getKey(), p.getValue()[0])).collect(Collectors.joining("&"));

    String url = wmsServerUrl + "&" + params;
    log.log(Level.FINEST, "Loading image " + url);

    try {
        BufferedImage image = ImageIO.read(new URL(url));
        if (image != null) {
            OutputStream out = response.getOutputStream();
            ImageIO.write(image, "png", out);
            image.flush();
            out.close();
            return;
        }
    } catch (Exception e) {
        log.log(Level.FINEST, "Failed loading WMS image for URL " + url + ": " + e);
    }

    // Fall back to return a blank image
    try {
        response.sendRedirect(BLANK_IMAGE);
    } catch (IOException e) {
        log.log(Level.FINEST, "Failed returning blank image for URL " + url + ": " + e);
    }
}

From source file:org.niord.web.wms.WmsProxyServlet.java

/**
 * Main GET method/*w ww.j  av a  2s  .  co m*/
 * @param request servlet request
 * @param response servlet response
 */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

    // Enforce "wmsProtected" flag. If set, only authenticated users can load the tiles.
    // On the client level, load the tiles using Ajax (see map-directive.js) to ensure
    // that the proper headers are passed along
    if (wmsProtected && request.getUserPrincipal() == null) {
        response.setStatus(HttpServletResponse.SC_FORBIDDEN);
        response.getWriter()
                .println("<html><body><p>WMS service only available to authenticated users</p></body></html>");
        return;
    }

    // Cache for a day
    WebUtils.cache(response, CACHE_TIMEOUT);

    // Check that the WMS provider has been defined using system properties
    if (StringUtils.isBlank(wmsServiceName) || StringUtils.isBlank(wmsProvider) || StringUtils.isBlank(wmsLogin)
            || StringUtils.isBlank(wmsPassword)) {
        response.sendRedirect(BLANK_IMAGE);
        return;
    }

    @SuppressWarnings("unchecked")
    Map<String, String[]> paramMap = request.getParameterMap();
    String params = paramMap.entrySet().stream()
            .filter(p -> StringUtils.isBlank(wmsLayers) || !"layers".equalsIgnoreCase(p.getKey()))
            .map(p -> String.format("%s=%s", p.getKey(), p.getValue()[0])).collect(Collectors.joining("&"));
    params += String.format("&SERVICENAME=%s&LOGIN=%s&PASSWORD=%s", wmsServiceName, wmsLogin, wmsPassword);
    if (StringUtils.isNotBlank(wmsLayers)) {
        params += String.format("&LAYERS=%s", wmsLayers);
    }

    String url = wmsProvider + "?" + params;
    log.trace("Loading image " + url);

    try {
        BufferedImage image = ImageIO.read(new URL(url));
        if (image != null) {
            //image = transformWhiteToTransparent(image);

            OutputStream out = response.getOutputStream();
            ImageIO.write(image, "png", out);
            image.flush();
            out.close();
            return;
        }
    } catch (Exception e) {
        log.trace("Failed loading WMS image for URL " + url + ": " + e);
    }

    // Fall back to return a blank image
    try {
        response.sendRedirect(BLANK_IMAGE);
    } catch (Exception e) {
        log.trace("Failed returning blank image for URL " + url + ": " + e);
    }
}

From source file:org.niord.web.wms.WmsProxyServlet.java

/**
 * Masks out white colour/*  ww  w  .  j  av a2  s.  c  om*/
 * @param image the image to mask out
 * @return the resulting image
 */
@SuppressWarnings("unused")
private BufferedImage transformWhiteToTransparent(BufferedImage image) {

    BufferedImage dest = image;
    if (image.getType() != BufferedImage.TYPE_INT_ARGB) {
        dest = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);
        Graphics2D g2 = dest.createGraphics();
        g2.drawImage(image, 0, 0, null);
        g2.dispose();

        image.flush();
    }

    // Mask out the white pixels
    final int width = image.getWidth();
    int[] imgData = new int[width];

    for (int y = 0; y < dest.getHeight(); y++) {
        // fetch a line of data from each image
        dest.getRGB(0, y, width, 1, imgData, 0, 1);
        // apply the mask
        for (int x = 0; x < width; x++) {
            for (Color col : MASKED_COLORS) {
                int colDist = Math.abs(col.getRed() - (imgData[x] >> 16 & 0x000000FF))
                        + Math.abs(col.getGreen() - (imgData[x] >> 8 & 0x000000FF))
                        + Math.abs(col.getBlue() - (imgData[x] & 0x000000FF));
                if (colDist <= COLOR_DIST) {
                    imgData[x] = 0x00FFFFFF & imgData[x];
                }
            }
        }
        // replace the data
        dest.setRGB(0, y, width, 1, imgData, 0, 1);
    }
    return dest;
}

From source file:org.olat.core.commons.services.image.spi.AbstractImageHelper.java

private Size getImageSizeFallback(VFSLeaf media) {
    InputStream fileStream = null;
    BufferedImage imageSrc = null;
    try {//from w w  w  .  ja va  2  s . co  m
        fileStream = media.getInputStream();
        if (fileStream != null) {
            imageSrc = ImageIO.read(fileStream);
            if (imageSrc == null) {
                // happens with faulty Java implementation, e.g. on MacOSX
                return null;
            }
            double realWidth = imageSrc.getWidth();
            double realHeight = imageSrc.getHeight();
            return new Size((int) realWidth, (int) realHeight, 0, 0, false);
        } else {
            return null;
        }
    } catch (IOException e) {
        // log error, don't do anything else
        log.error("Problem while setting image size to fit for resource::" + media, e);
        return null;
    } finally {
        IOUtils.closeQuietly(fileStream);
        if (imageSrc != null) {
            imageSrc.flush();
        }
    }
}

From source file:org.openmicroscopy.shoola.agents.imviewer.view.ImViewerModel.java

/**
 * Clears the images hosted by the tile if not <code>null</code>.
 * //w ww. j a v a2 s .  c  om
 * @param toClear The collection to handle.
 */
void clearTileImages(Collection<Tile> toClear) {
    if (toClear == null || toClear.size() == 0)
        return;
    Iterator<Tile> i = toClear.iterator();
    Tile tile;
    Object image;
    BufferedImage bi;
    TextureData data;
    while (i.hasNext()) {
        tile = i.next();
        image = tile.getImage();
        if (image != null) {
            if (image instanceof BufferedImage) {
                bi = (BufferedImage) image;
                bi.getGraphics().dispose();
                bi.flush();
                tile.setImage(null);
            } else {
                data = (TextureData) image;
                data.flush();
                tile.setImage(null);
            }
        }
    }
}

From source file:org.openmrs.module.emrapi.person.image.EmrPersonImageServiceImpl.java

@Override
public PersonImage savePersonImage(PersonImage personImage) {
    Person person = personImage.getPerson();
    String base64EncodedImage = personImage.getBase64EncodedImage();

    if (base64EncodedImage == null || base64EncodedImage.isEmpty())
        return personImage;

    try {/*from  www  .  j  a  v a2 s . com*/
        File imageFile = new File(String.format("%s/%s.%s",
                emrApiProperties.getPersonImageDirectory().getAbsolutePath(), person.getUuid(), imageFormat));

        byte[] decodedBytes = DatatypeConverter.parseBase64Binary(base64EncodedImage);
        BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(decodedBytes));
        ImageIO.write(bufferedImage, imageFormat, imageFile);
        bufferedImage.flush();

        personImage.setSavedImage(imageFile);
        log.info("Successfully created patient image at " + imageFile);

    } catch (Exception e) {
        log.error("Update patient image failed for : " + person);
        throw new APIException("Could not save patient image", e);
    }
    return personImage;
}

From source file:org.uiautomation.ios.server.servlet.ResourceServlet.java

private boolean validImage(File f) throws IOException {
    InputStream is = new FileInputStream(f);
    try {//from  w  w w.  ja  va2  s. co  m
        //is = new FileInputStream(f);

        final ImageInputStream imageInputStream = ImageIO.createImageInputStream(is);
        final Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(imageInputStream);
        if (!imageReaders.hasNext()) {
            // not an image
            return false;
        }
        final ImageReader imageReader = imageReaders.next();
        imageReader.setInput(imageInputStream);
        final BufferedImage image = imageReader.read(0);
        if (image == null) {
            // empty
            return false;
        }
        image.flush();
        return true;
    } catch (final IndexOutOfBoundsException e) {
        // truncated
        return false;
    } catch (final IIOException e) {
        if (e.getCause() instanceof EOFException) {
            // truncated
            return false;
        }
    } catch (Exception e) {
        return false;
    } finally {
        is.close();
    }
    return true;
}

From source file:oulib.aws.s3.S3Util.java

/**
 * Generate a small tiff file from large Tiff S3 bucket object <br>
 * Note: the small tiff file will have the same key path as the original one
 * /*from  w w w.  ja v  a 2s.  c om*/
 * @param s3client : S3 client
 * @param s3 : S3 object that con
 * @param targetBucketName : the bucket that stores the small tiff file
 * @param targetKey : key of the object in the target bucket
 * @param compressionRate : compression rate
 * @return : PutObjectResult
 */
public static PutObjectResult generateSmallTiff(AmazonS3 s3client, S3Object s3, String targetBucketName,
        String targetKey, double compressionRate) {

    PutObjectResult result = null;
    ByteArrayOutputStream bos = null;
    ByteArrayOutputStream os = null;
    ByteArrayInputStream is = null;
    S3ObjectInputStream s = null;
    ByteArrayInputStream byteInputStream = null;

    try {
        System.setProperty("com.sun.media.jai.disableMediaLib", "true");

        bos = new ByteArrayOutputStream();
        s = s3.getObjectContent();
        byte[] bytes = IOUtils.toByteArray(s);
        byteInputStream = new ByteArrayInputStream(bytes);

        TIFFDecodeParam param = new TIFFDecodeParam();
        ImageDecoder dec = ImageCodec.createImageDecoder("TIFF", byteInputStream, param);

        RenderedImage image = dec.decodeAsRenderedImage();

        RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_RENDERING,
                RenderingHints.VALUE_RENDER_QUALITY);

        RenderedOp resizedImage = JAI.create("SubsampleAverage", image, compressionRate, compressionRate,
                qualityHints);

        TIFFEncodeParam params = new com.sun.media.jai.codec.TIFFEncodeParam();

        resizedImage = JAI.create("encode", resizedImage, bos, "TIFF", params);

        BufferedImage imagenew = resizedImage.getSourceImage(0).getAsBufferedImage();

        os = new ByteArrayOutputStream();
        ImageIO.write(imagenew, "tif", os);
        is = new ByteArrayInputStream(os.toByteArray());

        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(os.toByteArray().length);
        metadata.setContentType("image/tiff");
        metadata.setLastModified(new Date());

        os.close();

        imagenew.flush();

        result = s3client.putObject(new PutObjectRequest(targetBucketName, targetKey, is, metadata));
    } catch (IOException | AmazonClientException ex) {
        Logger.getLogger(S3Util.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        try {
            if (bos != null) {
                bos.close();
            }
            if (os != null) {
                os.close();
            }
            if (is != null) {
                is.close();
            }
            if (s != null) {
                s.close();
            }
            if (byteInputStream != null) {
                byteInputStream.close();
            }
        } catch (IOException ex) {
            Logger.getLogger(S3Util.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    return result;
}

From source file:screencaptcher.Screen.java

@Override
public void run() {
    while (continueLoop) {
        try {//  ww w. j a  v a2 s .c  om
            BufferedImage image = robot.createScreenCapture(rectangle);
            File temp = File.createTempFile("imtemps", ".tmp");
            OutStrem = new FileOutputStream(temp);
            ImageIO.write(image, "JPEG", OutStrem);
            Thread.sleep(400);

            OutStrem.flush();
            image.flush();
            byte[] bFile = new byte[(int) temp.length()];
            try (FileInputStream fileInputStream = new FileInputStream(temp)) {
                fileInputStream.read(bFile);
            }
            this.SaveinDB(bFile);
            image.flush();
            OutStrem.flush();
            OutStrem.close();
            image = null;
            Thread.sleep(Sleep - 400);
            temp.delete();
        } catch (IOException ex) {
            System.err.println("ERROR SCREEN : " + ex.getMessage());
        } catch (InterruptedException ex) {
            Logger.getLogger(Screen.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

From source file:util.ui.UiUtilities.java

/**
 * Scales an image to a specific size and returns an BufferedImage
 *
 * @param img//from w w w. ja  va 2 s.c o m
 *          Scale this image
 * @param width
 *          new width
 * @param height
 *          new height
 * @param type The type of the image.
 * @return Scaled BufferedImage
 *
 * @since 3.0
 */
public static BufferedImage scaleIconToBufferedImage(BufferedImage img, int width, int height, int type,
        Color backgroundColor) {
    // Scale Image
    Image image = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);

    BufferedImage im = new BufferedImage(width, height, type);

    Graphics2D g2 = im.createGraphics();
    if (backgroundColor != null) {
        g2.setColor(backgroundColor);
        g2.fillRect(0, 0, width, height);
    }

    g2.drawImage(image, null, null);
    g2.dispose();

    im.flush();
    return im;

}