public static void displayImageInfo(ImageInfo info) { ImageSize size = info.getSize(); Dimension2D dPt = size.getDimensionPt(); Dimension dPx = size.getDimensionPx(); log.debug(info.getOriginalURI() + " " + info.getMimeType() + " " + Math.round(dPx.getWidth()) + "x" + Math.round(dPx.getHeight())); log.debug("Resolution:" + Math.round(size.getDpiHorizontal()) + "x" + Math.round(size.getDpiVertical())); log.debug("Print size: " + Math.round(dPt.getWidth() / 72) + "\" x" + Math.round(dPt.getHeight() / 72) + "\""); }
/** * Create a <wp:inline> element suitable for this image, * which can be _embedded_ in w:p/w:r/w:drawing. * @param filenameHint Any text, for example the original filename * @param altText Like HTML's alt text * @param id1 An id unique in the document * @param id2 Another id unique in the document * @param cx Image width in twip * @param link true if this is to be linked not embedded * None of these things seem to be exposed in Word 2007's * user interface, but Word won't open the document if * any of the attributes these go in (except @ desc) aren't present! * @throws Exception */ public Inline createImageInline(String filenameHint, String altText, int id1, int id2, long cx, boolean link) throws Exception { ImageSize size = imageInfo.getSize(); Dimension2D dPt = size.getDimensionPt(); double imageWidthTwips = dPt.getWidth() * 20; log.debug("imageWidthTwips: " + imageWidthTwips); long cy; log.debug("Scaling image height to retain aspect ratio"); cy = UnitsOfMeasurement.twipToEMU(dPt.getHeight() * 20 * cx / imageWidthTwips); // Now convert cx to EMU cx = UnitsOfMeasurement.twipToEMU(cx); log.debug("cx=" + cx + "; cy=" + cy); return createImageInline(filenameHint, altText, id1, id2, cx, cy, link); }
ImageInfo info = new ImageInfo(uri, JLaTeXMathObj.MIME_TYPE); ImageSize size = new ImageSize(); size.setResolution(context.getSourceResolution()); size.calcPixelsFromSize(); info.setSize(size); info.getCustomObjects().put(ImageInfo.ORIGINAL_IMAGE, jlmImage);
private PDFXObject addRenderedImage(String key, RenderedImage img) { ImageInfo info = new ImageInfo(null, "image/unknown"); ImageSize size = new ImageSize(img.getWidth(), img.getHeight(), GraphicsConstants.DEFAULT_DPI); info.setSize(size); ImageRendered imgRend = new ImageRendered(info, img, null); ImageRenderedAdapter adapter = new ImageRenderedAdapter(imgRend, key); PDFXObject xObject = pdfDoc.addImage(resourceContext, adapter); flushPDFDocument(); return xObject; }
&& (info.getMimeType().equals(ContentTypes.IMAGE_TIFF) || info.getMimeType().equals(ContentTypes.IMAGE_EMF2) // ImageInfo || info.getMimeType().equals(ContentTypes.IMAGE_WMF) || info.getMimeType().equals(ContentTypes.IMAGE_PNG) || info.getMimeType().equals(ContentTypes.IMAGE_JPEG) || info.getMimeType().equals(ContentTypes.IMAGE_GIF) || info.getMimeType().equals(ContentTypes.IMAGE_BMP))) {
/** {@inheritDoc} */ public String toString() { return getOriginalURI() + " (" + getMimeType() + ")"; }
/** {@inheritDoc} */ public void handleImage(RenderingContext context, Image image, Rectangle pos) throws IOException { PSRenderingContext psContext = (PSRenderingContext)context; PSGenerator gen = psContext.getGenerator(); ImageRawCCITTFax ccitt = (ImageRawCCITTFax)image; float x = (float)pos.getX() / 1000f; float y = (float)pos.getY() / 1000f; float w = (float)pos.getWidth() / 1000f; float h = (float)pos.getHeight() / 1000f; Rectangle2D targetRect = new Rectangle2D.Float( x, y, w, h); ImageInfo info = image.getInfo(); ImageEncoder encoder = new ImageEncoderCCITTFax(ccitt); PSImageUtils.writeImage(encoder, info.getSize().getDimensionPx(), info.getOriginalURI(), targetRect, ccitt.getColorSpace(), 1, false, gen); }
/** {@inheritDoc} */ public Image loadImage(ImageInfo info, Map hints, ImageSessionContext session) throws ImageException, IOException { if (!MimeConstants.MIME_EPS.equals(info.getMimeType())) { throw new IllegalArgumentException( "ImageInfo must be from a image with MIME type: " + MimeConstants.MIME_EPS); } Source src = session.needSource(info.getOriginalURI()); InputStream in = XmlSourceUtil.needInputStream(src); XmlSourceUtil.removeStreams(src); //so others cannot close them, we take them over PreloaderEPS.EPSBinaryFileHeader binaryHeader; binaryHeader = (PreloaderEPS.EPSBinaryFileHeader)info.getCustomObjects().get( PreloaderEPS.EPS_BINARY_HEADER); if (binaryHeader != null) { //Binary EPS: just extract the EPS part in.skip(binaryHeader.getPSStart()); in = new SubInputStream(in, binaryHeader.getPSLength(), true); } ImageRawEPS epsImage = new ImageRawEPS(info, in); return epsImage; }
uri = resourceInfo.getUri(); ImageInfo imageInfo = new ImageInfo(uri, null); imageInfo.setSize(new ImageSize( img.getWidth(), img.getHeight(), paintingState.getResolution())); imageInfo.getSize().calcSizeFromPixels(); ImageRendered red = new ImageRendered(imageInfo, img, null); Rectangle targetPos = new Rectangle(
/** {@inheritDoc} */ public Image loadImage(ImageInfo info, Map hints, ImageSessionContext session) throws ImageException, IOException { if (!JLaTeXMathObj.MIME_TYPE.equals(info.getMimeType())) { throw new IllegalArgumentException("ImageInfo must be from an LaTeX image"); } final Image img = info.getOriginalImage(); if (!(img instanceof ImageJLaTeXMath)) { throw new IllegalArgumentException("ImageInfo was expected to contain the JLaTeXMath image"); } ImageJLaTeXMath jlmImage = (ImageJLaTeXMath) img; return jlmImage; } }
/** * Returns an image from the cache or null if it wasn't found. * @param info the ImageInfo instance representing the image * @param flavor the requested ImageFlavor for the image * @return the requested image or null if the image is not in the cache */ public Image getImage(ImageInfo info, ImageFlavor flavor) { return getImage(info.getOriginalURI(), flavor); }
ImageInfo info = imageManager.getImageInfo(uri, userAgent.getImageSessionContext()); Object moreImages = info.getCustomObjects().get(ImageInfo.HAS_MORE_IMAGES); boolean hasMoreImages = moreImages != null && !Boolean.FALSE.equals(moreImages); Dimension intrinsicSize = info.getSize().getDimensionMpt(); ImageLayout layout = new ImageLayout(getExternalDocument(), this, intrinsicSize); tempURI.toASCIIString(), userAgent.getImageSessionContext()); moreImages = subinfo.getCustomObjects().get(ImageInfo.HAS_MORE_IMAGES); hasMoreImages = moreImages != null && !Boolean.FALSE.equals(moreImages); intrinsicSize = subinfo.getSize().getDimensionMpt(); layout = new ImageLayout( getExternalDocument(), this, intrinsicSize);
@Override protected void drawImageUsingURI(String uri, Rectangle rect) { ImageManager manager = getUserAgent().getImageManager(); ImageInfo info = null; try { ImageSessionContext sessionContext = getUserAgent().getImageSessionContext(); info = manager.getImageInfo(uri, sessionContext); if (accessEnabled) { PDFStructElem structElem = (PDFStructElem) getContext().getStructureTreeElement(); String mimeType = info.getMimeType(); if (!mimeType.equalsIgnoreCase("application/pdf")) { prepareImageMCID(structElem); } } drawImageUsingImageHandler(info, rect); } catch (ImageException ie) { ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( getUserAgent().getEventBroadcaster()); eventProducer.imageError(this, (info != null ? info.toString() : uri), ie, null); } catch (FileNotFoundException fe) { ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( getUserAgent().getEventBroadcaster()); eventProducer.imageNotFound(this, (info != null ? info.toString() : uri), fe, null); } catch (IOException ioe) { ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( getUserAgent().getEventBroadcaster()); eventProducer.imageIOError(this, (info != null ? info.toString() : uri), ioe, null); } }
AffineTransform at = new AffineTransform(); at.translate(x / 1000f, y / 1000f); double sx = pos.getWidth() / info.getSize().getWidthMpt(); double sy = pos.getHeight() / info.getSize().getHeightMpt(); sx *= userAgent.getSourceResolution() / info.getSize().getDpiHorizontal(); sy *= userAgent.getSourceResolution() / info.getSize().getDpiVertical(); at.scale(sx, sy); state.getGraph().drawRenderedImage(imgRend.getRenderedImage(), at); ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( getUserAgent().getEventBroadcaster()); eventProducer.imageError(this, (info != null ? info.toString() : uri), ie, null); } catch (FileNotFoundException fe) { ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( getUserAgent().getEventBroadcaster()); eventProducer.imageNotFound(this, (info != null ? info.toString() : uri), fe, null); } catch (IOException ioe) { ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( getUserAgent().getEventBroadcaster()); eventProducer.imageIOError(this, (info != null ? info.toString() : uri), ioe, null);
IIOException firstException = null; IIOMetadata iiometa = (IIOMetadata)info.getCustomObjects().get( ImageIOUtil.IMAGEIO_METADATA); boolean ignoreMetadata = (iiometa != null); boolean providerIgnoresICC = false; Source src = session.needSource(info.getOriginalURI()); ImageInputStream imgStream = ImageUtil.needImageInputStream(src); try { reader.setInput(imgStream, false, ignoreMetadata); ImageReadParam param = getParam(reader, hints); final int pageIndex = ImageUtil.needPageIndexFromURI(info.getOriginalURI()); try { cm = cm2; } catch (IllegalArgumentException iae) { String msg = "Image " + info.getOriginalURI() + " has an incompatible color profile." + " The color profile will be ignored." + "\nColor model of loaded bitmap: " + cm + "\nColor model of color profile: " + cm2; if (info.getCustomObjects().get("warningincustomobject") != null) { info.getCustomObjects().put("warning", msg); } else { log.warn(msg);
size.setResolution(context.getSourceResolution()); size.calcPixelsFromSize(); info.setSize(size); info.getCustomObjects().put(EPS_BOUNDING_BOX, bbox); return true; } finally {
ImageInfo info = new ImageInfo(uri, MimeConstants.MIME_EPS); boolean success = determineSize(in, context, info); info.getCustomObjects().put(EPS_BINARY_HEADER, binaryHeader);
/** * Returns the bounding box of the EPS image. * @return the bounding box */ public Rectangle2D getBoundingBox() { Rectangle2D bbox = (Rectangle2D)getInfo().getCustomObjects().get( PreloaderEPS.EPS_BOUNDING_BOX); return bbox; } }
/** {@inheritDoc} */ public boolean isCacheable() { Image img = getInfo().getOriginalImage(); if (img == null) { return true; } return img.isCacheable(); }
ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( userAgent.getEventBroadcaster()); eventProducer.imageError(resTracker, (info != null ? info.toString() : uri), ie, null);