// 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(); } }