Ejemplo n.º 1
0
  // takes the reader lock
  BufferedImage getAssociatedImage(String name) throws IOException {
    Lock rl = lock.readLock();
    rl.lock();
    try {
      checkDisposed();

      long dim[] = new long[2];
      OpenSlideJNI.openslide_get_associated_image_dimensions(osr, name, dim);
      checkError();
      if (dim[0] == -1) {
        // non-terminal error
        throw new IOException("Failure reading associated image");
      }

      BufferedImage img =
          new BufferedImage((int) dim[0], (int) dim[1], BufferedImage.TYPE_INT_ARGB_PRE);

      int data[] = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();

      OpenSlideJNI.openslide_read_associated_image(osr, name, data);
      checkError();
      return img;
    } finally {
      rl.unlock();
    }
  }