⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpegmetadataformat.java

📁 java1.6众多例子参考
💻 JAVA
字号:
/* * @(#)JPEGMetadataFormat.java	1.11 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.imageio.plugins.jpeg;import javax.imageio.metadata.IIOMetadataFormat;import javax.imageio.metadata.IIOMetadataFormatImpl;import javax.imageio.ImageTypeSpecifier;import javax.imageio.plugins.jpeg.JPEGQTable;import javax.imageio.plugins.jpeg.JPEGHuffmanTable;import java.util.List;import java.util.ArrayList;abstract class JPEGMetadataFormat extends IIOMetadataFormatImpl {    // 2-byte length reduces max to 65533    private static final int MAX_JPEG_DATA_SIZE = 65533;    String resourceBaseName = this.getClass().getName() + "Resources";    JPEGMetadataFormat(String formatName, int childPolicy) {        super(formatName, childPolicy);        setResourceBaseName(resourceBaseName);    }    // Format shared between image and stream formats    void addStreamElements(String parentName) {        addElement("dqt", parentName, 1, 4);        addElement("dqtable", "dqt", CHILD_POLICY_EMPTY);        addAttribute("dqtable",                      "elementPrecision",                      DATATYPE_INTEGER,                     false,                     "0");        List tabids = new ArrayList();        tabids.add("0");        tabids.add("1");        tabids.add("2");        tabids.add("3");        addAttribute("dqtable",                      "qtableId",                      DATATYPE_INTEGER,                     true,                     null,                     tabids);        addObjectValue("dqtable",                        JPEGQTable.class,                       true,                       null);        addElement("dht", parentName, 1, 4);        addElement("dhtable", "dht", CHILD_POLICY_EMPTY);        List classes = new ArrayList();        classes.add("0");        classes.add("1");        addAttribute("dhtable",                      "class",                      DATATYPE_INTEGER,                     true,                     null,                     classes);        addAttribute("dhtable",                      "htableId",                      DATATYPE_INTEGER,                     true,                     null,                     tabids);        addObjectValue("dhtable",                        JPEGHuffmanTable.class,                       true,                       null);                addElement("dri", parentName, CHILD_POLICY_EMPTY);        addAttribute("dri",                      "interval",                      DATATYPE_INTEGER,                     true,                     null,                     "0", "65535",                     true, true);        addElement("com", parentName, CHILD_POLICY_EMPTY);        addAttribute("com",                      "comment",                     DATATYPE_STRING,                     false,                     null);        addObjectValue("com", byte[].class, 1, MAX_JPEG_DATA_SIZE);        addElement("unknown", parentName, CHILD_POLICY_EMPTY);        addAttribute("unknown",                      "MarkerTag",                     DATATYPE_INTEGER,                     true,                     null,                     "0", "255",                     true, true);        addObjectValue("unknown", byte[].class, 1, MAX_JPEG_DATA_SIZE);    }    public boolean canNodeAppear(String elementName,                                 ImageTypeSpecifier imageType) {        // Just check if it appears in the format        if (isInSubtree(elementName, getRootName())){            return true;        }        return false;    }    /**     * Returns <code>true</code> if the named element occurs in the     * subtree of the format starting with the node named by     * <code>subtreeName</code>, including the node     * itself.  <code>subtreeName</code> may be any node in     * the format.  If it is not, an     * <code>IllegalArgumentException</code> is thrown.     */     protected boolean isInSubtree(String elementName,                                   String subtreeName) {        if (elementName.equals(subtreeName)) {            return true;        }        String [] children = getChildNames(elementName);        for (int i=0; i < children.length; i++) {            if (isInSubtree(elementName, children[i])) {                return true;            }        }        return false;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -