javax.imageio.ImageTypeSpecifier#createFromBufferedImageType ( )源码实例Demo

下面列出了javax.imageio.ImageTypeSpecifier#createFromBufferedImageType ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: jdk8u_jdk   文件: ImageTypeSpecifierBitsPerBand.java
public static void main(String[] args) {
    int biType = BufferedImage.TYPE_USHORT_565_RGB;
    ImageTypeSpecifier type =
        ImageTypeSpecifier.createFromBufferedImageType(biType);

    int b0 = type.getBitsPerBand(0);
    int b1 = type.getBitsPerBand(1);
    int b2 = type.getBitsPerBand(2);

    if (b0 != 5 || b1 != 6 || b2 != 5) {
        throw new RuntimeException("Got incorrect bits per band value!");
    }

    boolean gotIAE = false;
    try {
        int b3 = type.getBitsPerBand(3);
    } catch (IllegalArgumentException e) {
        gotIAE = true;
    }
    if (!gotIAE) {
        throw new RuntimeException
            ("Failed to get IllegalArgumentException for band == 3!");
    }
}
 
@Override
public void writeBufferedImage(BufferedImage bufferedImage, float quality, int dpi, String formatName, File targetFile) throws Exception {

    System.out.println("Saving " + targetFile.getPath());

    if (formatName.equalsIgnoreCase("jpg") || formatName.equalsIgnoreCase("jpeg")) {
        JPEGImageWriter imageWriter = (JPEGImageWriter) ImageIO.getImageWritersBySuffix(formatName).next();
        ImageWriteParam writeParam = imageWriter.getDefaultWriteParam();
        ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
        IIOMetadata metadata = imageWriter.getDefaultImageMetadata(typeSpecifier, writeParam);

        if (formatName.equalsIgnoreCase("jpg") || formatName.equalsIgnoreCase("jpeg")) {
            Element tree = (Element) metadata.getAsTree("javax_imageio_jpeg_image_1.0");
            Element jfif = (Element) tree.getElementsByTagName("app0JFIF").item(0);
            jfif.setAttribute("Xdensity", Integer.toString(dpi));
            jfif.setAttribute("Ydensity", Integer.toString(dpi));
            jfif.setAttribute("resUnits", "1");
            metadata.setFromTree("javax_imageio_jpeg_image_1.0", tree);
        }

        if (quality >= 0 && quality <= 1f) {
            JPEGImageWriteParam jpegParams = (JPEGImageWriteParam) imageWriter.getDefaultWriteParam();
            jpegParams.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
            jpegParams.setCompressionQuality(quality);
        }

        FileOutputStream os = new FileOutputStream(targetFile);
        final ImageOutputStream stream = ImageIO.createImageOutputStream(os);

        try {
            imageWriter.setOutput(stream);
            imageWriter.write(metadata, new IIOImage(bufferedImage, null, metadata), writeParam);
        } finally {
            stream.close();
        }
    } else {
        writeBufferedImage(bufferedImage, formatName, targetFile);
    }
}
 
源代码3 项目: jdk8u_jdk   文件: MergeTreeTest.java
public static void main(String[] args) throws IOException {
    ImageWriter iw =
        (ImageWriter)ImageIO.getImageWritersByFormatName("jpeg").next();

    ImageTypeSpecifier type =
        ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);

    ImageOutputStream ios =
        ImageIO.createImageOutputStream(new File("MergeTreeTest.jpeg"));
    iw.setOutput(ios);

    IIOMetadata meta = iw.getDefaultImageMetadata(type, null);

    boolean isFailed = false;

    String[] fmts = meta.getMetadataFormatNames();
    for (int i=0; i<fmts.length; i++) {
        System.out.print("Format: " + fmts[i] + " ... ");
        Node root = meta.getAsTree(fmts[i]);
        try {
            meta.mergeTree(fmts[i], root);
        } catch (NullPointerException e) {
            throw new RuntimeException("Test failed for format " + fmts[i], e);
        }
        System.out.println("PASSED");
    }
}
 
源代码4 项目: jdk8u_jdk   文件: DestTypeTest.java
public ImageWriteParam getWriteParam() {
    ImageWriteParam p =  w.getDefaultWriteParam();
    p.setSourceBands(new int[] {0, 1, 2});
    ImageTypeSpecifier type =
        ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
    p.setDestinationType(type);

    return p;
}
 
源代码5 项目: dss   文件: DefaultDrawerImageUtils.java
private static ImageAndResolution convertToInputStreamJPG(BufferedImage buffImage, int dpi) throws IOException {
	ImageWriter writer = getImageWriter("jpeg");

	JPEGImageWriteParam jpegParams = (JPEGImageWriteParam) writer.getDefaultWriteParam();
	jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
	jpegParams.setCompressionQuality(1);

	ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
	IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, jpegParams);

	initDpiJPG(metadata, dpi);

	return getImageAndResolution(buffImage, dpi, writer, jpegParams, metadata);
}
 
源代码6 项目: openjdk-jdk9   文件: MergeTreeTest.java
public static void main(String[] args) throws IOException {
    ImageWriter iw =
        (ImageWriter)ImageIO.getImageWritersByFormatName("jpeg").next();

    ImageTypeSpecifier type =
        ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);

    ImageOutputStream ios =
        ImageIO.createImageOutputStream(new File("MergeTreeTest.jpeg"));
    iw.setOutput(ios);

    IIOMetadata meta = iw.getDefaultImageMetadata(type, null);

    boolean isFailed = false;

    String[] fmts = meta.getMetadataFormatNames();
    for (int i=0; i<fmts.length; i++) {
        System.out.print("Format: " + fmts[i] + " ... ");
        Node root = meta.getAsTree(fmts[i]);
        try {
            meta.mergeTree(fmts[i], root);
        } catch (NullPointerException e) {
            throw new RuntimeException("Test failed for format " + fmts[i], e);
        }
        System.out.println("PASSED");
    }
}
 
源代码7 项目: SwissQRBill   文件: PNGCanvas.java
/**
 * Saves image as PDF and stores meta data to indicate the resolution.
 */
private static void createPNG(BufferedImage image, OutputStream os, int resolution) throws IOException {

    ImageWriter writer = null;
    ImageWriteParam writeParam = null;
    IIOMetadata metadata = null;

    for (Iterator<ImageWriter> iw = ImageIO.getImageWritersByFormatName("png"); iw.hasNext(); ) {
        writer = iw.next();
        writeParam = writer.getDefaultWriteParam();
        ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(image.getType());
        metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
        if (!metadata.isReadOnly() && metadata.isStandardMetadataFormatSupported())
            break;
    }

    if (writer == null || writeParam == null)
        throw new QRBillGenerationException("No valid PNG writer found");

    addDpiMetadata(metadata, resolution);
    addTextMetadata(metadata);

    try (ImageOutputStream stream = ImageIO.createImageOutputStream(os)) {
        writer.setOutput(stream);
        writer.write(metadata, new IIOImage(image, null, metadata), writeParam);
    }
}
 
源代码8 项目: MeteoInfo   文件: ChartPanel.java
/**
 * Save image
 *
 * @param fileName File name
 * @param dpi DPI
 * @param width Width
 * @param height Height
 * @param sleep Sleep seconds for web map layer
 * @throws IOException
 * @throws java.lang.InterruptedException
 */
public void saveImage(String fileName, int dpi, int width, int height, Integer sleep) throws IOException, InterruptedException {
    File output = new File(fileName);
    output.delete();

    String formatName = fileName.substring(fileName.lastIndexOf('.') + 1);
    if (formatName.equals("jpg")) {
        formatName = "jpeg";
        saveImage_Jpeg(fileName, width, height, dpi);
        return;
    }

    double scaleFactor = dpi / 72.0;
    BufferedImage image = new BufferedImage((int)(width * scaleFactor), (int)(height * scaleFactor), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = image.createGraphics();
    AffineTransform at = g.getTransform();
    at.scale(scaleFactor, scaleFactor);
    g.setTransform(at);
    paintGraphics(g, width, height);
    for (Iterator<ImageWriter> iw = ImageIO.getImageWritersByFormatName(formatName); iw.hasNext();) {
        ImageWriter writer = iw.next();
        ImageWriteParam writeParam = writer.getDefaultWriteParam();
        ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB);
        IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
        if (metadata == null) {
            metadata = writer.getDefaultImageMetadata(typeSpecifier, null);
        }
        if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported()) {
            continue;
        }

        ImageUtil.setDPI(metadata, dpi);

        if (sleep != null) {
            Thread.sleep(sleep * 1000);
        }
        final ImageOutputStream stream = ImageIO.createImageOutputStream(output);
        try {
            writer.setOutput(stream);
            writer.write(metadata, new IIOImage(image, null, metadata), writeParam);
        } finally {
            stream.close();
        }
        break;
    }
    g.dispose();
}
 
源代码9 项目: MeteoInfo   文件: MapLayout.java
/**
 * Export to a picture file
 *
 * @param fileName File path
 * @param dpi DPI
 * @throws java.io.FileNotFoundException
 * @throws javax.print.PrintException
 */
public void exportToPicture(String fileName, Integer dpi) throws FileNotFoundException, PrintException, IOException {
    if (dpi == null) {
        exportToPicture(fileName);
    } else {
        File output = new File(fileName);
        output.delete();

        int width = _pageBounds.width;
        int height = _pageBounds.height;
        String formatName = fileName.substring(fileName.lastIndexOf('.') + 1);
        if (formatName.equals("jpg")) {
            formatName = "jpeg";
            saveImage_Jpeg(fileName, width, height, dpi);
            return;
        }

        double scaleFactor = dpi / 72.0;
        BufferedImage image = new BufferedImage((int)(width * scaleFactor), (int)(height * scaleFactor), BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = image.createGraphics();
        AffineTransform at = g.getTransform();
        at.scale(scaleFactor, scaleFactor);
        g.setTransform(at);
        paintGraphics(g);
        for (Iterator<ImageWriter> iw = ImageIO.getImageWritersByFormatName(formatName); iw.hasNext();) {
            ImageWriter writer = iw.next();
            ImageWriteParam writeParam = writer.getDefaultWriteParam();
            ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB);
            IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
            if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported()) {
                continue;
            }

            ImageUtil.setDPI(metadata, dpi);

            final ImageOutputStream stream = ImageIO.createImageOutputStream(output);
            try {
                writer.setOutput(stream);
                writer.write(metadata, new IIOImage(image, null, metadata), writeParam);
            } finally {
                stream.close();
            }
            break;
        }
        g.dispose();
    }
}
 
源代码10 项目: openjdk-8   文件: JPEGImageReader.java
protected ImageTypeSpecifier produce() {
    switch (csCode) {
        case JPEG.JCS_GRAYSCALE:
            return ImageTypeSpecifier.createFromBufferedImageType
                    (BufferedImage.TYPE_BYTE_GRAY);
        case JPEG.JCS_RGB:
            return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
                    JPEG.bOffsRGB,
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
        case JPEG.JCS_RGBA:
            return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
                    0xff000000,
                    0x00ff0000,
                    0x0000ff00,
                    0x000000ff,
                    DataBuffer.TYPE_INT,
                    false);
        case JPEG.JCS_YCC:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[2],
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
            } else {
                return null;
            }
        case JPEG.JCS_YCCA:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[3],
                    DataBuffer.TYPE_BYTE,
                    true,
                    false);
            } else {
                return null;
            }
        default:
            return null;
    }
}
 
源代码11 项目: JDKSourceCode1.8   文件: JPEGImageReader.java
protected ImageTypeSpecifier produce() {
    switch (csCode) {
        case JPEG.JCS_GRAYSCALE:
            return ImageTypeSpecifier.createFromBufferedImageType
                    (BufferedImage.TYPE_BYTE_GRAY);
        case JPEG.JCS_RGB:
            return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
                    JPEG.bOffsRGB,
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
        case JPEG.JCS_RGBA:
            return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
                    0xff000000,
                    0x00ff0000,
                    0x0000ff00,
                    0x000000ff,
                    DataBuffer.TYPE_INT,
                    false);
        case JPEG.JCS_YCC:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[2],
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
            } else {
                return null;
            }
        case JPEG.JCS_YCCA:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[3],
                    DataBuffer.TYPE_BYTE,
                    true,
                    false);
            } else {
                return null;
            }
        default:
            return null;
    }
}
 
源代码12 项目: graphicsfuzz   文件: GifSequenceWriter.java
/**
 * Creates a new GifSequenceWriter.
 *
 * @param outputStream the ImageOutputStream to be written to
 * @param imageType one of the imageTypes specified in BufferedImage
 * @param timeBetweenFramesMs the time between frames in miliseconds
 * @param loopContinuously wether the gif should loop repeatedly
 * @throws IIOException if no gif ImageWriters are found
 *
 * @author Elliot Kroo (elliot[at]kroo[dot]net)
 */
public GifSequenceWriter(
    ImageOutputStream outputStream,
    int imageType,
    int timeBetweenFramesMs,
    boolean loopContinuously) throws IIOException, IOException {
  // my method to create a writer
  gifWriter = getWriter();
  imageWriteParam = gifWriter.getDefaultWriteParam();
  ImageTypeSpecifier imageTypeSpecifier =
      ImageTypeSpecifier.createFromBufferedImageType(imageType);

  imageMetaData =
      gifWriter.getDefaultImageMetadata(imageTypeSpecifier,
          imageWriteParam);

  String metaFormatName = imageMetaData.getNativeMetadataFormatName();

  IIOMetadataNode root = (IIOMetadataNode)
      imageMetaData.getAsTree(metaFormatName);

  IIOMetadataNode graphicsControlExtensionNode = getNode(
      root,
      "GraphicControlExtension");

  graphicsControlExtensionNode.setAttribute("disposalMethod", "none");
  graphicsControlExtensionNode.setAttribute("userInputFlag", "FALSE");
  graphicsControlExtensionNode.setAttribute(
      "transparentColorFlag",
      "FALSE");
  graphicsControlExtensionNode.setAttribute(
      "delayTime",
      Integer.toString(timeBetweenFramesMs / 10));
  graphicsControlExtensionNode.setAttribute(
      "transparentColorIndex",
      "0");

  IIOMetadataNode commentsNode = getNode(root, "CommentExtensions");
  commentsNode.setAttribute("CommentExtension", "Created by MAH");

  IIOMetadataNode child = new IIOMetadataNode("ApplicationExtension");

  child.setAttribute("applicationID", "NETSCAPE");
  child.setAttribute("authenticationCode", "2.0");

  IIOMetadataNode appEntensionsNode = getNode(
      root,
      "ApplicationExtensions");

  int loop = loopContinuously ? 0 : 1;

  child.setUserObject(new byte[]{ 0x1, (byte) (loop & 0xFF), (byte)
      ((loop >> 8) & 0xFF)});
  appEntensionsNode.appendChild(child);

  imageMetaData.setFromTree(metaFormatName, root);

  gifWriter.setOutput(outputStream);

  gifWriter.prepareWriteSequence(null);
}
 
源代码13 项目: jdk8u-dev-jdk   文件: JPEGImageReader.java
protected ImageTypeSpecifier produce() {
    switch (csCode) {
        case JPEG.JCS_GRAYSCALE:
            return ImageTypeSpecifier.createFromBufferedImageType
                    (BufferedImage.TYPE_BYTE_GRAY);
        case JPEG.JCS_RGB:
            return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
                    JPEG.bOffsRGB,
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
        case JPEG.JCS_RGBA:
            return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
                    0xff000000,
                    0x00ff0000,
                    0x0000ff00,
                    0x000000ff,
                    DataBuffer.TYPE_INT,
                    false);
        case JPEG.JCS_YCC:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[2],
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
            } else {
                return null;
            }
        case JPEG.JCS_YCCA:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[3],
                    DataBuffer.TYPE_BYTE,
                    true,
                    false);
            } else {
                return null;
            }
        default:
            return null;
    }
}
 
源代码14 项目: openjdk-jdk8u   文件: JPEGImageReader.java
protected ImageTypeSpecifier produce() {
    switch (csCode) {
        case JPEG.JCS_GRAYSCALE:
            return ImageTypeSpecifier.createFromBufferedImageType
                    (BufferedImage.TYPE_BYTE_GRAY);
        case JPEG.JCS_RGB:
            return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
                    JPEG.bOffsRGB,
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
        case JPEG.JCS_RGBA:
            return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
                    0xff000000,
                    0x00ff0000,
                    0x0000ff00,
                    0x000000ff,
                    DataBuffer.TYPE_INT,
                    false);
        case JPEG.JCS_YCC:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[2],
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
            } else {
                return null;
            }
        case JPEG.JCS_YCCA:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[3],
                    DataBuffer.TYPE_BYTE,
                    true,
                    false);
            } else {
                return null;
            }
        default:
            return null;
    }
}
 
源代码15 项目: hottub   文件: JPEGImageReader.java
protected ImageTypeSpecifier produce() {
    switch (csCode) {
        case JPEG.JCS_GRAYSCALE:
            return ImageTypeSpecifier.createFromBufferedImageType
                    (BufferedImage.TYPE_BYTE_GRAY);
        case JPEG.JCS_RGB:
            return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
                    JPEG.bOffsRGB,
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
        case JPEG.JCS_RGBA:
            return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
                    0xff000000,
                    0x00ff0000,
                    0x0000ff00,
                    0x000000ff,
                    DataBuffer.TYPE_INT,
                    false);
        case JPEG.JCS_YCC:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[2],
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
            } else {
                return null;
            }
        case JPEG.JCS_YCCA:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[3],
                    DataBuffer.TYPE_BYTE,
                    true,
                    false);
            } else {
                return null;
            }
        default:
            return null;
    }
}
 
源代码16 项目: openjdk-8-source   文件: JPEGImageReader.java
protected ImageTypeSpecifier produce() {
    switch (csCode) {
        case JPEG.JCS_GRAYSCALE:
            return ImageTypeSpecifier.createFromBufferedImageType
                    (BufferedImage.TYPE_BYTE_GRAY);
        case JPEG.JCS_RGB:
            return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
                    JPEG.bOffsRGB,
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
        case JPEG.JCS_RGBA:
            return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
                    0xff000000,
                    0x00ff0000,
                    0x0000ff00,
                    0x000000ff,
                    DataBuffer.TYPE_INT,
                    false);
        case JPEG.JCS_YCC:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[2],
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
            } else {
                return null;
            }
        case JPEG.JCS_YCCA:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[3],
                    DataBuffer.TYPE_BYTE,
                    true,
                    false);
            } else {
                return null;
            }
        default:
            return null;
    }
}
 
源代码17 项目: open-ig   文件: GifSequenceWriter.java
/**
 * Creates a new GifSequenceWriter.
 * 
 * @param outputStream
 *            the ImageOutputStream to be written to
 * @param imageType
 *            one of the imageTypes specified in BufferedImage
 * @param timeBetweenFramesMS
 *            the time between frames in miliseconds
 * @param loopContinuously
 *            wether the gif should loop repeatedly
 * @throws IOException if the underlying stream throws it or if no gif ImageWriters are found
 */
public GifSequenceWriter(ImageOutputStream outputStream, int imageType,
		int timeBetweenFramesMS, boolean loopContinuously)
		throws IOException {
	// my method to create a writer
	gifWriter = getWriter();
	imageWriteParam = gifWriter.getDefaultWriteParam();
	ImageTypeSpecifier imageTypeSpecifier = ImageTypeSpecifier
			.createFromBufferedImageType(imageType);

	imageMetaData = gifWriter.getDefaultImageMetadata(imageTypeSpecifier,
			imageWriteParam);

	String metaFormatName = imageMetaData.getNativeMetadataFormatName();

	IIOMetadataNode root = (IIOMetadataNode) imageMetaData
			.getAsTree(metaFormatName);

	IIOMetadataNode graphicsControlExtensionNode = getNode(root,
			"GraphicControlExtension");

	graphicsControlExtensionNode.setAttribute("disposalMethod", "none");
	graphicsControlExtensionNode.setAttribute("userInputFlag", "FALSE");
	graphicsControlExtensionNode.setAttribute("transparentColorFlag",
			"FALSE");
	graphicsControlExtensionNode.setAttribute("delayTime", Integer
			.toString(timeBetweenFramesMS / 10));
	graphicsControlExtensionNode.setAttribute("transparentColorIndex", "0");

	IIOMetadataNode commentsNode = getNode(root, "CommentExtensions");
	commentsNode.setAttribute("CommentExtension", "Created by MAH");

	IIOMetadataNode appEntensionsNode = getNode(root,
			"ApplicationExtensions");

	IIOMetadataNode child = new IIOMetadataNode("ApplicationExtension");

	child.setAttribute("applicationID", "NETSCAPE");
	child.setAttribute("authenticationCode", "2.0");

	int loop = loopContinuously ? 0 : 1;

	child.setUserObject(new byte[] { 0x1, (byte) (loop & 0xFF),
			(byte) ((loop >> 8) & 0xFF) });
	appEntensionsNode.appendChild(child);

	imageMetaData.setFromTree(metaFormatName, root);

	gifWriter.setOutput(outputStream);

	gifWriter.prepareWriteSequence(null);
}
 
源代码18 项目: jdk8u-jdk   文件: JPEGImageReader.java
protected ImageTypeSpecifier produce() {
    switch (csCode) {
        case JPEG.JCS_GRAYSCALE:
            return ImageTypeSpecifier.createFromBufferedImageType
                    (BufferedImage.TYPE_BYTE_GRAY);
        case JPEG.JCS_RGB:
            return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
                    JPEG.bOffsRGB,
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
        case JPEG.JCS_RGBA:
            return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
                    0xff000000,
                    0x00ff0000,
                    0x0000ff00,
                    0x000000ff,
                    DataBuffer.TYPE_INT,
                    false);
        case JPEG.JCS_YCC:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[2],
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
            } else {
                return null;
            }
        case JPEG.JCS_YCCA:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[3],
                    DataBuffer.TYPE_BYTE,
                    true,
                    false);
            } else {
                return null;
            }
        default:
            return null;
    }
}
 
源代码19 项目: jdk8u-jdk   文件: JPEGImageReader.java
protected ImageTypeSpecifier produce() {
    switch (csCode) {
        case JPEG.JCS_GRAYSCALE:
            return ImageTypeSpecifier.createFromBufferedImageType
                    (BufferedImage.TYPE_BYTE_GRAY);
        case JPEG.JCS_RGB:
            return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
                    JPEG.bOffsRGB,
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
        case JPEG.JCS_RGBA:
            return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
                    0xff000000,
                    0x00ff0000,
                    0x0000ff00,
                    0x000000ff,
                    DataBuffer.TYPE_INT,
                    false);
        case JPEG.JCS_YCC:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[2],
                    DataBuffer.TYPE_BYTE,
                    false,
                    false);
            } else {
                return null;
            }
        case JPEG.JCS_YCCA:
            if (JPEG.JCS.getYCC() != null) {
                return ImageTypeSpecifier.createInterleaved(
                        JPEG.JCS.getYCC(),
                    JPEG.bandOffsets[3],
                    DataBuffer.TYPE_BYTE,
                    true,
                    false);
            } else {
                return null;
            }
        default:
            return null;
    }
}
 
源代码20 项目: dss   文件: DefaultDrawerImageUtils.java
private static ImageAndResolution convertToInputStreamPNG(BufferedImage buffImage, int dpi) throws IOException {
	ImageWriter writer = getImageWriter("png");

	ImageWriteParam imageWriterParams = writer.getDefaultWriteParam();

	ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB);
	IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, imageWriterParams);

	initDpiPNG(metadata, dpi);

	return getImageAndResolution(buffImage, dpi, writer, imageWriterParams, metadata);
}