- java.lang.Object
-
- javax.imageio.plugins.tiff.TIFFField
-
- 实现的所有接口
-
Cloneable
public final class TIFFField extends Object implements Cloneable
表示TIFF 6.0图像文件目录中的字段的类。TIFF图像文件目录(IFD)中的字段被定义为带有相同数据类型的值序列的标签号。 TIFF 6.0定义了12种数据类型; 第13种类型
TIFF Data Type to Java Data Type Mapping TIFF Data Type Java Constant Java Data Type Java Type NameIFD在TIFF规范补充说明1的TIFF技术说明1中定义。这些TIFF数据类型由Java常量引用,并在内部映射到Java语言数据类型和类型名称,如下所示:BYTETIFFTag.TIFF_BYTEbyte"Byte"ASCIITIFFTag.TIFF_ASCIIString"Ascii"SHORTTIFFTag.TIFF_SHORTchar"Short"LONGTIFFTag.TIFF_LONGlong"Long"RATIONALTIFFTag.TIFF_RATIONALlong[2]{numerator, denominator}"Rational"SBYTETIFFTag.TIFF_SBYTEbyte"SByte"UNDEFINEDTIFFTag.TIFF_UNDEFINEDbyte"Undefined"SSHORTTIFFTag.TIFF_SSHORTshort"SShort"SLONGTIFFTag.TIFF_SLONGint"SLong"SRATIONALTIFFTag.TIFF_SRATIONALint[2]{numerator, denominator}"SRational"FLOATTIFFTag.TIFF_FLOATfloat"Float"DOUBLETIFFTag.TIFF_DOUBLEdouble"Double"IFDTIFFTag.TIFF_IFD_POINTERlong"IFDPointer"- 从以下版本开始:
- 9
- 另请参见:
-
TIFFDirectory,TIFFTag
-
-
构造方法摘要
构造方法 构造器 描述 TIFFField(TIFFTag tag, int type, int count)使用createArrayForType()构造数据数组,并使用提供的参数和创建的数组调用TIFFField(TIFFTag,int,int,Object)。TIFFField(TIFFTag tag, int type, int count, Object data)使用任意数据构造TIFFField。TIFFField(TIFFTag tag, int type, long offset, TIFFDirectory dir)构造一个具有IFD偏移量和内容的TIFFField。TIFFField(TIFFTag tag, long value)构造具有单个非负整数值的TIFFField。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 TIFFFieldclone()克隆该字段及其中包含的所有信息。static ObjectcreateArrayForType(int dataType, int count)创建适合指定数据类型的数组。static TIFFFieldcreateFromMetadataNode(TIFFTagSet tagSet, Node node)从TIFF本机映像元数据节点创建TIFFField。byte[]getAsBytes()将数据作为未解释的数组byte返回。char[]getAsChars()以chars(无符号16位整数)的数组形式返回TIFFTag.TIFF_SHORT数据。doublegetAsDouble(int index)以任何格式返回数据,如double。double[]getAsDoubles()以doubles(64位浮点值)的数组形式返回TIFFTag.TIFF_DOUBLE数据。floatgetAsFloat(int index)以任何格式返回数据为float。float[]getAsFloats()以float(32位浮点值)的数组形式返回TIFFTag.TIFF_FLOAT数据。intgetAsInt(int index)以任何格式返回数据为int。int[]getAsInts()以ints(带符号的32位整数)的数组形式返回TIFFTag.TIFF_SLONG数据。longgetAsLong(int index)以任何格式返回数据为long。long[]getAsLongs()以long(带符号的64位整数)的数组形式返回TIFFTag.TIFF_LONG或TIFF_IFD_POINTER数据。NodegetAsNativeNode()返回TIFFField作为名为"TIFFField"或"TIFFIFD"的节点,如TIFF本机图像元数据规范中所述。long[]getAsRational(int index)返回TIFFTag.TIFF_RATIONAL数据项作为两元素的int数组。long[][]getAsRationals()将TIFFTag.TIFF_RATIONAL数据作为longs的2元素数组的数组long。short[]getAsShorts()以shorts(带符号的16位整数)的数组形式返回TIFFTag.TIFF_SSHORT数据。int[]getAsSRational(int index)返回TIFFTag.TIFF_SRATIONAL作为一个二单元阵列的数据项int秒。int[][]getAsSRationals()将TIFFTag.TIFF_SRATIONAL数据作为ints的2元素数组的数组int。StringgetAsString(int index)返回TIFFTag.TIFF_ASCII值String。intgetCount()返回字段中存在的数据项数。ObjectgetData()返回对与该字段关联的数据对象的引用。TIFFDirectorygetDirectory()返回关联的TIFFDirectory(如果可用)。TIFFTaggetTag()检索与此字段关联的标记。intgetTagNumber()检索范围[0,65535]的标记号。intgetType()返回字段中存储的数据类型。static intgetTypeByName(String typeName)返回与提供的数据类型名称对应的数据类型常量。static StringgetTypeName(int dataType)返回提供的数据类型常量的名称。StringgetValueAsString(int index)返回String其中包含人类可读的数据项版本。booleanhasDirectory()返回该字段是否具有TIFFDirectory。booleanisIntegral()指示与字段关联的值是否为整数数据类型。
-
-
-
构造方法详细信息
-
TIFFField
public TIFFField(TIFFTag tag, int type, int count, Object data)
使用任意数据构造TIFFField。type参数必须是tag.isDataTypeOK()返回true的值。data参数必须是适合TIFF字段类型的Java类型的数组。请注意,无论该值所需的字节数如何,
TIFFField的值(数据)始终为实际字段值。 尽管事实上对应于该字段的TIFF IFD条目实际上可能包含对字段值的偏移而不是值本身(当且仅当该值适合4个字节时才发生),这是这种情况。 换句话说,该字段的值已经从TIFF流中读取。 (当该字段表示非基线IFD的内容时,可能会发生这种情况的例外。在这种情况下,数据将是long[]其中包含IFD的偏移量,TIFFDirectory返回的TIFFDirectory将是其内容。)- 参数
-
tag- 与此字段关联的标记。 -
type-TIFFTag.TIFF_*常量之一,指示写入TIFF流的字段的数据类型。 -
count- 数据值的数量。 -
data- 字段的实际数据内容。 - 异常
-
NullPointerException- 如果tag == null。 -
IllegalArgumentException- 如果type不是TIFFTag.TIFF_*数据类型常量之一。 -
IllegalArgumentException- 如果type是所提供的TIFFTag的不可接受的数据类型。 -
IllegalArgumentException- 如果count < 0。 -
IllegalArgumentException- 如果count < 1和type是TIFF_RATIONAL或TIFF_SRATIONAL。 -
IllegalArgumentException- 如果count != 1和type是TIFF_IFD_POINTER。 -
NullPointerException- 如果data == null。 -
IllegalArgumentException- 如果data是与指定类型不兼容的类的实例。 -
IllegalArgumentException- 如果数据数组的大小错误。 -
IllegalArgumentException-如果所述数据数组的类型是TIFF_LONG,TIFF_RATIONAL,或TIFF_IFD_POINTER和任何元素是负的或大于0xffffffff。
-
TIFFField
public TIFFField(TIFFTag tag, int type, int count)
使用createArrayForType()构造数据数组,并使用提供的参数和创建的数组调用TIFFField(TIFFTag,int,int,Object)。- 参数
-
tag- 与此字段关联的标记。 -
type-TIFFTag.TIFF_*常量之一,指示写入TIFF流的字段的数据类型。 -
count- 数据值的数量。 - 异常
-
NullPointerException- 如果tag == null。 -
IllegalArgumentException- 如果type不是TIFFTag.TIFF_*数据类型常量之一。 -
IllegalArgumentException- 如果type是所提供的TIFFTag的不可接受的数据类型。 -
IllegalArgumentException- 如果count < 0。 -
IllegalArgumentException- 如果count < 1和type是TIFF_RATIONAL或TIFF_SRATIONAL。 -
IllegalArgumentException- 如果count != 1和type是TIFF_IFD_POINTER。 - 另请参见:
-
TIFFField(TIFFTag,int,int,Object)
-
TIFFField
public TIFFField(TIFFTag tag, long value)
构造具有单个非负整数值的TIFFField。 该字段的类型为TIFF_SHORT如果value为[0,0xffff],并键入TIFF_LONG如果value为[0x10000,0xffffffff]。 该领域的统计将是统一的。- 参数
-
tag- 要与此字段关联的标记。 -
value- 与此字段关联的值。 - 异常
-
NullPointerException- 如果tag == null。 -
IllegalArgumentException- 如果value不在[0,0xffffffff]。 -
IllegalArgumentException-如果value是[0,0xffff]和TIFF_SHORT是不可接受的类型为TIFFTag,或者如果value是[0x10000,0xffffffff]和TIFF_LONG是不可接受的类型为TIFFTag。
-
TIFFField
public TIFFField(TIFFTag tag, int type, long offset, TIFFDirectory dir)
构造具有IFD偏移和内容的TIFFField。 偏移量将作为该字段的数据存储为long[] {offset}。 该目录不会被克隆。 该领域的统计将是统一的。- 参数
-
tag- 与此字段关联的标记。 -
type- 常量之一TIFFTag.TIFF_LONG或TIFFTag.TIFF_IFD_POINTER。 -
offset- IFD抵消。 -
dir- 该目录。 - 异常
-
NullPointerException- 如果tag == null。 -
IllegalArgumentException- 如果type是所提供的TIFFTag的不可接受的数据类型。 -
IllegalArgumentException- 如果type既不是TIFFTag.TIFF_LONG也不是TIFFTag.TIFF_IFD_POINTER。 -
IllegalArgumentException- 如果offset <= 0。 -
NullPointerException- 如果dir == null。 - 另请参见:
-
TIFFField(TIFFTag,int,int,Object)
-
-
方法详细信息
-
createFromMetadataNode
public static TIFFField createFromMetadataNode(TIFFTagSet tagSet, Node node)
从TIFF本机映像元数据节点创建TIFFField。 如果该值"number"中没有找到该节点的属性tagSet那么新TIFFTag名称为TIFFTag.UNKNOWN_TAG_NAME将被创建并分配到外地。- 参数
-
tagSet-该TIFFTagSet到的TIFFTag领域的所属。 -
node- 本机TIFF图像元数据TIFFField节点。 - 结果
-
新
TIFFField。 - 异常
-
IllegalArgumentException-如果Node参数含量不粘附到TIFFField由定义的元件结构TIFF native image metadata format specification ,或如果节点属性和数据的组合不是每法律TIFFField(TIFFTag,int,int,Object)构造规范。 请注意,可能会在此类异常上设置原因。
-
getTag
public TIFFTag getTag()
检索与此字段关联的标记。- 结果
-
相关
TIFFTag。
-
getTagNumber
public int getTagNumber()
检索范围[0,65535]的标记号。- 结果
- 标签号。
-
getType
public int getType()
返回字段中存储的数据类型。 对于TIFF 6.0流,该值将等于TIFFTag.TIFF_*常量之一。 对于TIFF的未来版本,可以使用更高的值。- 结果
- 字段值的数据类型。
-
getTypeName
public static String getTypeName(int dataType)
返回提供的数据类型常量的名称。- 参数
-
dataType-TIFFTag.TIFF_*常量之一,指示写入TIFF流的字段的数据类型。 - 结果
- 与提供的类型常量对应的类型名称。
- 异常
-
IllegalArgumentException- 如果dataType不是TIFFTag.TIFF_*数据类型常量之一。
-
getTypeByName
public static int getTypeByName(String typeName)
返回与提供的数据类型名称对应的数据类型常量。 如果名称未知,将返回-1。- 参数
-
typeName- 类型名称。 - 结果
-
如果名称未被识别,
TIFFTag.TIFF_*常量之一或-1。
-
createArrayForType
public static Object createArrayForType(int dataType, int count)
创建适合指定数据类型的数组。- 参数
-
dataType-TIFFTag.TIFF_*数据类型常量之一。 -
count- 数组中的值的数量。 - 结果
- 适合指定数据类型的数组。
- 异常
-
IllegalArgumentException- 如果dataType不是TIFFTag.TIFF_*数据类型常量之一。 -
IllegalArgumentException- 如果count < 0。 -
IllegalArgumentException- 如果count < 1和type是TIFF_RATIONAL或TIFF_SRATIONAL。 -
IllegalArgumentException- 如果count != 1和type是TIFF_IFD_POINTER。
-
getAsNativeNode
public Node getAsNativeNode()
将TIFFField作为名为"TIFFField"或"TIFFIFD"的节点返回,如TIFF本机映像元数据规范中所述。 该节点将被命名为"TIFFIFD"当且仅当hasDirectory()个回报true和字段的类型为TIFFTag.TIFF_LONG或TIFFTag.TIFF_IFD_POINTER。- 结果
-
Node名为"TIFFField"或"TIFFIFD"。
-
isIntegral
public boolean isIntegral()
指示与字段关联的值是否为整数数据类型。- 结果
- 字段类型是否是完整的。
-
getCount
public int getCount()
返回字段中存在的数据项数。 对于TIFFTag.TIFF_ASCII字段,返回的值是Strings的数量,而不是文件表示中的数据总长度。- 结果
- 字段中存在的数据项数。
-
getData
public Object getData()
返回对与该字段关联的数据对象的引用。- 结果
- 该字段的数据对象。
-
getAsBytes
public byte[] getAsBytes()
将数据作为未解释的数组byte返回。 类型字段的必须之一TIFFTag.TIFF_BYTE,TIFF_SBYTE,或TIFF_UNDEFINED。对于
TIFFTag.TIFF_BYTE格式的数据,应用程序在将数据提升为较长的整数类型时必须小心,以避免符号扩展。- 结果
- 数据为未解释的字节数组。
- 异常
-
ClassCastException-如果字段的类型是不TIFF_BYTE,TIFF_SBYTE,或TIFF_UNDEFINED。
-
getAsChars
public char[] getAsChars()
以chars(无符号16位整数)的数组形式返回TIFFTag.TIFF_SHORT数据。- 结果
-
数据为
char的数组。 - 异常
-
ClassCastException- 如果该字段不是类型TIFF_SHORT。
-
getAsShorts
public short[] getAsShorts()
以short(带符号的16位整数)的数组形式返回TIFFTag.TIFF_SSHORT数据。- 结果
-
该数据为
short的数组。 - 异常
-
ClassCastException- 如果该字段不是类型TIFF_SSHORT。
-
getAsInts
public int[] getAsInts()
以ints(带符号的32位整数)的数组形式返回TIFFTag.TIFF_SLONG数据。- 结果
-
该数据为
int的数组。 - 异常
-
ClassCastException-如果字段的类型是不TIFF_SHORT,TIFF_SSHORT,或TIFF_SLONG。
-
getAsLongs
public long[] getAsLongs()
以longs(带符号的64位整数)的数组形式返回TIFFTag.TIFF_LONG或TIFF_IFD_POINTER数据。- 结果
-
数据为
long的数组。 - 异常
-
ClassCastException- 如果该字段的类型不是TIFF_LONG或TIFF_IFD_POINTER。
-
getAsFloats
public float[] getAsFloats()
以floats(32位浮点值)的数组形式返回TIFFTag.TIFF_FLOAT数据。- 结果
-
该数据为
float的数组。 - 异常
-
ClassCastException- 如果该字段的类型不是TIFF_FLOAT。
-
getAsDoubles
public double[] getAsDoubles()
以doubles(64位浮点值)的数组形式返回TIFFTag.TIFF_DOUBLE数据。- 结果
-
该数据为
double的数组。 - 异常
-
ClassCastException- 如果该字段不是类型TIFF_DOUBLE。
-
getAsSRationals
public int[][] getAsSRationals()
将TIFFTag.TIFF_SRATIONAL数据作为ints的2元素数组的数组int。- 结果
- 数据作为一组签名的理性。
- 异常
-
ClassCastException- 如果该字段的类型不是TIFF_SRATIONAL。
-
getAsRationals
public long[][] getAsRationals()
将TIFFTag.TIFF_RATIONAL数据作为longs的2元素数组的数组long。- 结果
- 数据为无符号有理数的数组。
- 异常
-
ClassCastException- 如果该字段不是类型TIFF_RATIONAL。
-
getAsInt
public int getAsInt(int index)
以任何格式返回数据为int。TIFFTag.TIFF_BYTE值被视为未签名; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE数据将在[TIFF_SBYTE]范围内返回。TIFF_UNDEFINED值被视为TIFF_BYTE。在数据
TIFF_SLONG,TIFF_LONG,TIFF_FLOAT,TIFF_DOUBLE或TIFF_IFD_POINTER格式简单地转换为int,并可能截断受到影响。通过使用双精度算术将分子除以分母然后转换为
int来评估TIFF_SRATIONAL或TIFF_RATIONAL格式的数据。 可能发生精度损失和截断。TIFF_ASCII格式的数据将由Double.parseDouble方法解析,结果案例为int。- 参数
-
index- 数据索引。 - 结果
-
给定索引处的数据为
int。
-
getAsLong
public long getAsLong(int index)
以任何格式返回数据为long。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为未签名; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE数据将在[TIFF_SBYTE]范围内返回。TIFF_FLOAT和TIFF_DOUBLE中的数据被简单地转换为long并且可能遭受截断。通过使用双精度算术将分子除以分母然后转换为
long来评估TIFF_SRATIONAL或TIFF_RATIONAL格式的数据。 可能发生精度损失和截断。TIFF_ASCII格式的数据将由Double.parseDouble方法解析,结果转换为long。- 参数
-
index- 数据索引。 - 结果
-
给定指数的数据为
long。
-
getAsFloat
public float getAsFloat(int index)
以任何格式返回数据为float。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为未签名; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE数据将在[TIFF_SBYTE]范围内返回。在数据
TIFF_SLONG,TIFF_LONG,TIFF_DOUBLE,或TIFF_IFD_POINTER格式简单地转换为float,并可能截断受到影响。通过使用双精度算术将分子除以分母然后转换为
float来评估TIFF_SRATIONAL或TIFF_RATIONAL格式的数据。TIFF_ASCII格式的数据将被Double.parseDouble方法解析,结果转换为float。- 参数
-
index- 数据索引。 - 结果
-
给定索引处的数据为
float。
-
getAsDouble
public double getAsDouble(int index)
以任何格式返回数据,如double。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为未签名; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE数据将在[TIFF_SBYTE]范围内返回。通过使用双精度算术将分子除以分母来评估
TIFF_SRATIONAL或TIFF_RATIONAL格式的数据。TIFF_ASCII格式的数据将由Double.parseDouble方法解析。- 参数
-
index- 数据索引。 - 结果
-
给定索引处的数据为
double。
-
getAsString
public String getAsString(int index)
返回TIFFTag.TIFF_ASCII值String。- 参数
-
index- 数据索引。 - 结果
-
给定指数的数据为
String。 - 异常
-
ClassCastException- 如果该字段的类型不是类型TIFF_ASCII。
-
getAsSRational
public int[] getAsSRational(int index)
返回TIFFTag.TIFF_SRATIONAL作为一个二单元阵列的数据项int秒。- 参数
-
index- 数据索引。 - 结果
- 给定索引处的数据为有符号的理性。
- 异常
-
ClassCastException- 如果该字段不是类型TIFF_SRATIONAL。
-
getAsRational
public long[] getAsRational(int index)
返回TIFFTag.TIFF_RATIONAL数据项作为两元素的int数组。- 参数
-
index- 数据索引。 - 结果
- 给定索引处的数据为无符号有理数。
- 异常
-
ClassCastException- 如果该字段不是类型TIFF_RATIONAL。
-
getValueAsString
public String getValueAsString(int index)
返回包含数据项的人类可读版本的String。 类型TIFFTag.TIFF_RATIONAL或TIFF_SRATIONAL数据表示为由'/'字符分隔的一对整数。 如果一个分子TIFFTag.TIFF_RATIONAL或TIFF_SRATIONAL是分母的整数倍,则该值被表示为"q/1"其中q是分子和分母的商。- 参数
-
index- 数据索引。 - 结果
-
给定指数的数据为
String。 - 异常
-
ClassCastException- 如果该字段不属于某种合法字段类型。
-
hasDirectory
public boolean hasDirectory()
返回该字段是否具有TIFFDirectory。- 结果
- 当且仅当getDirectory()返回非null时才返回true。
-
getDirectory
public TIFFDirectory getDirectory()
返回关联的TIFFDirectory(如果可用)。 如果未设置目录,则将返回null。- 结果
- TIFFDirectory实例或null。
-
clone
public TIFFField clone() throws CloneNotSupportedException
克隆该字段及其中包含的所有信息。- 重写:
-
clone类Object - 结果
-
此
TIFFField的克隆。 - 异常
-
CloneNotSupportedException- 如果无法克隆实例。 - 另请参见:
-
Cloneable
-
-