- 所有已实现的接口:
-
Cloneable
TIFF图像文件目录(IFD)中的字段被定义为由相同数据类型的数值序列陪同的标记号。TIFF 6.0定义了12种数据类型;第13种类型IFD
在TIFF规范补充1的TIFF技术说明1中定义。这些TIFF数据类型由Java常量引用,并在内部映射到Java语言数据类型和类型名称如下:
TIFF数据类型 | Java常量 | Java数据类型 | Java类型名称 |
---|---|---|---|
BYTE |
TIFFTag.TIFF_BYTE |
byte |
"Byte" |
ASCII |
TIFFTag.TIFF_ASCII |
String |
"Ascii" |
SHORT |
TIFFTag.TIFF_SHORT |
char |
"Short" |
LONG |
TIFFTag.TIFF_LONG |
long |
"Long" |
RATIONAL |
TIFFTag.TIFF_RATIONAL |
long[2] {numerator, denominator} |
"Rational" |
SBYTE |
TIFFTag.TIFF_SBYTE |
byte |
"SByte" |
UNDEFINED |
TIFFTag.TIFF_UNDEFINED |
byte |
"Undefined" |
SSHORT |
TIFFTag.TIFF_SSHORT |
short |
"SShort" |
SLONG |
TIFFTag.TIFF_SLONG |
int |
"SLong" |
SRATIONAL |
TIFFTag.TIFF_SRATIONAL |
int[2] {numerator, denominator} |
"SRational" |
FLOAT |
TIFFTag.TIFF_FLOAT |
float |
"Float" |
DOUBLE |
TIFFTag.TIFF_DOUBLE |
double |
"Double" |
IFD |
TIFFTag.TIFF_IFD_POINTER |
long |
"IFDPointer" |
- 自从:
- 9
- 参见:
-
Constructor Summary
ConstructorDescription使用createArrayForType()
构造数据数组,并使用提供的参数和创建的数组调用TIFFField(TIFFTag,int,int,Object)
。使用任意数据构造一个TIFFField
。TIFFField
(TIFFTag tag, int type, long offset, TIFFDirectory dir) 使用IFD偏移和内容构造一个TIFFField
。使用单个非负整数值构造一个TIFFField
。 -
Method Summary
Modifier and TypeMethodDescriptionclone()
克隆字段及其中包含的所有信息。static Object
createArrayForType
(int dataType, int count) 为指定的数据类型创建一个适当的数组。static TIFFField
createFromMetadataNode
(TIFFTagSet tagSet, Node node) 从TIFF本机图像元数据节点创建一个TIFFField
。byte[]
将数据作为未解释的byte
数组返回。char[]
将TIFFTag.TIFF_SHORT
数据作为char
数组(无符号16位整数)返回。double
getAsDouble
(int index) 将任何格式的数据作为double
返回。double[]
将TIFFTag.TIFF_DOUBLE
数据作为double
数组(64位浮点数值)返回。float
getAsFloat
(int index) 将任何格式的数据作为float
返回。float[]
将TIFFTag.TIFF_FLOAT
数据作为float
数组(32位浮点数值)返回。int
getAsInt
(int index) 将任何格式的数据作为int
返回。int[]
将TIFFTag.TIFF_SLONG
数据作为int
数组(有符号32位整数)返回。long
getAsLong
(int index) 将任何格式的数据作为long
返回。long[]
将TIFFTag.TIFF_LONG
或TIFF_IFD_POINTER
数据作为long
数组(有符号64位整数)返回。将TIFFField
作为一个名为"TIFFField"
或"TIFFIFD"
的节点返回,如TIFF本机图像元数据规范中所述。long[]
getAsRational
(int index) 将一个TIFFTag.TIFF_RATIONAL
数据项作为两个元素的int
数组返回。long[][]
将TIFFTag.TIFF_RATIONAL
数据作为long
数组的2元素数组返回。short[]
将TIFFTag.TIFF_SSHORT
数据作为short
数组(有符号16位整数)返回。int[]
getAsSRational
(int index) 将一个TIFFTag.TIFF_SRATIONAL
数据项作为两个元素的int
数组返回。int[][]
将TIFFTag.TIFF_SRATIONAL
数据作为int
数组的2元素数组返回。getAsString
(int index) 将TIFFTag.TIFF_ASCII
值作为String
返回。int
getCount()
返回字段中存在的数据项数量。getData()
返回与字段关联的数据对象的引用。返回关联的TIFFDirectory
(如果可用)。getTag()
检索与此字段关联的标记。int
检索范围在[0,65535]
内的标记号。int
getType()
返回字段中存储的数据类型。static int
getTypeByName
(String typeName) 返回与提供的数据类型名称对应的数据类型常量。static String
getTypeName
(int dataType) 返回提供的数据类型常量的名称。getValueAsString
(int index) 返回包含数据项的人类可读版本的String
。boolean
返回字段是否具有TIFFDirectory
。boolean
指示与字段关联的值是否为整数数据类型。
-
Constructor Details
-
TIFFField
使用任意数据构造一个TIFFField
。type
参数必须是tag.isDataTypeOK()
返回true
的值。data
参数必须是适合于TIFF字段类型的Java类型数组。请注意,
TIFFField
的值(数据)将始终是实际字段值,而不管该值所需的字节数。尽管TIFF IFD Entry对应的字段值可能实际上包含指向字段值的偏移量,而不是值本身(仅当值适合4字节时才会发生这种情况)。换句话说,字段的值将已经从TIFF流中读取。(在字段表示非基线IFD内容的情况下可能会有例外。在这种情况下,数据将是包含IFD偏移量的long[]
,并且由getDirectory()
返回的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
使用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
使用单个非负整数值构造TIFFField
。如果value
在[0,0xffff]
范围内,则字段将具有类型TIFF_SHORT
,如果value
在[0x10000,0xffffffff]
范围内,则字段将具有类型TIFF_LONG
。字段的数量将为1。- 参数:
-
tag
- 要与此字段关联的标签。 -
value
- 要与此字段关联的值。 - 抛出:
-
NullPointerException
- 如果tag == null
。 -
IllegalArgumentException
- 如果value
不在[0,0xffffffff]
范围内。 -
IllegalArgumentException
- 如果value
在[0,0xffff]
范围内且TIFF_SHORT
是TIFFTag
的不可接受类型,或者如果value
在[0x10000,0xffffffff]
范围内且TIFF_LONG
是TIFFTag
的不可接受类型。
-
TIFFField
使用IFD偏移和内容构造TIFFField
。偏移将作为此字段的数据存储为long[] {offset}
。目录将不会被克隆。字段的数量将为1。- 参数:
-
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
。 - 参见:
-
-
Method Details
-
createFromMetadataNode
从TIFF本机图像元数据节点创建TIFFField
。如果节点的"number"
属性的值在tagSet
中找不到,则将创建一个新的名称为TIFFTag.UNKNOWN_TAG_NAME
的TIFFTag
并分配给字段。- 参数:
-
tagSet
- 字段所属的TIFFTagSet
。 -
node
- 本机TIFF图像元数据TIFFField
节点。 - 返回:
-
一个新的
TIFFField
。 - 抛出:
-
IllegalArgumentException
- 如果Node
参数内容不符合TIFF本机图像元数据格式规范中定义的TIFFField
元素结构,或者如果节点属性和数据的组合不符合TIFFField(TIFFTag,int,int,Object)
构造函数规范。请注意,此类异常可能会设置原因。
-
getTag
检索与此字段关联的标签。- 返回:
-
关联的
TIFFTag
。
-
getTagNumber
public int getTagNumber()检索范围在[0,65535]
之间的标签号。- 返回:
- 标签号。
-
getType
public int getType()返回字段中存储的数据类型。对于TIFF 6.0流,该值将等于TIFFTag.TIFF_*
常量之一。对于TIFF的未来修订版本,可能存在更高的值。- 返回:
- 字段值的数据类型。
-
getTypeName
返回所提供数据类型常量的名称。- 参数:
-
dataType
- 表示字段数据类型的TIFFTag.TIFF_*
常量之一,如写入TIFF流。 - 返回:
- 与提供的类型常量对应的类型名称。
- 抛出:
-
IllegalArgumentException
- 如果dataType
不是TIFFTag.TIFF_*
数据类型常量之一。
-
getTypeByName
返回与提供的数据类型名称对应的数据类型常量。如果名称未知,则返回-1
。- 参数:
-
typeName
- 类型名称。 - 返回:
-
TIFFTag.TIFF_*
常量之一,如果名称未被识别,则返回-1
。
-
createArrayForType
创建适合指定数据类型的数组。- 参数:
-
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
将TIFFField
作为节点返回,节点名称为"TIFFField"
或"TIFFIFD"
,如TIFF本机图像元数据规范中所述。仅当hasDirectory()
返回true
且字段类型为TIFFTag.TIFF_LONG
或TIFFTag.TIFF_IFD_POINTER
时,节点将命名为"TIFFIFD"
。- 返回:
-
名为
"TIFFField"
或"TIFFIFD"
的Node
。
-
isIntegral
public boolean isIntegral()指示字段关联值是否为整数数据类型。- 返回:
- 字段类型是否为整数。
-
getCount
public int getCount()返回字段中存在的数据项数。对于TIFFTag.TIFF_ASCII
字段,返回值是String
的数量,而不是文件表示中数据的总长度。- 返回:
- 字段中存在的数据项数。
-
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()将TIFFTag.TIFF_SHORT
数据作为char
数组(无符号16位整数)返回。- 返回:
-
数据作为
char
数组。 - 抛出:
-
ClassCastException
- 如果字段不是TIFF_SHORT
类型。
-
getAsShorts
public short[] getAsShorts()将TIFFTag.TIFF_SSHORT
数据作为short
数组(有符号16位整数)返回。- 返回:
-
数据作为
short
数组。 - 抛出:
-
ClassCastException
- 如果字段不是TIFF_SSHORT
类型。
-
getAsInts
public int[] getAsInts()将TIFFTag.TIFF_SLONG
数据作为int
数组(有符号32位整数)返回。- 返回:
-
数据作为
int
数组。 - 抛出:
-
ClassCastException
- 如果字段不是TIFF_SHORT
、TIFF_SSHORT
或TIFF_SLONG
类型。
-
getAsLongs
public long[] getAsLongs()将TIFFTag.TIFF_LONG
或TIFF_IFD_POINTER
数据作为long
数组(有符号64位整数)返回。- 返回:
-
数据作为
long
数组。 - 抛出:
-
ClassCastException
- 如果字段不是TIFF_LONG
或TIFF_IFD_POINTER
类型。
-
getAsFloats
public float[] getAsFloats()将TIFFTag.TIFF_FLOAT
数据作为float
数组(32位浮点值)返回。- 返回:
-
数据作为
float
数组。 - 抛出:
-
ClassCastException
- 如果字段不是TIFF_FLOAT
类型。
-
getAsDoubles
public double[] getAsDoubles()将TIFFTag.TIFF_DOUBLE
数据作为double
数组(64位浮点值)返回。- 返回:
-
数据作为
double
数组。 - 抛出:
-
ClassCastException
- 如果字段不是TIFF_DOUBLE
类型。
-
getAsSRationals
public int[][] getAsSRationals()将TIFFTag.TIFF_SRATIONAL
数据作为int
的2元素数组的数组返回。- 返回:
- 数据作为有符号分数的数组。
- 抛出:
-
ClassCastException
- 如果字段不是TIFF_SRATIONAL
类型。
-
getAsRationals
public long[][] getAsRationals()将TIFFTag.TIFF_RATIONAL
数据作为long
的2元素数组的数组返回。- 返回:
- 数据作为无符号分数的数组。
- 抛出:
-
ClassCastException
- 如果字段不是TIFF_RATIONAL
类型。
-
getAsInt
public int getAsInt(int index) 将数据以int
的形式返回,可以是任何格式的数据。TIFFTag.TIFF_BYTE
值被视为无符号的;即,不会发生符号扩展,返回值将在[0, 255]范围内。TIFF_SBYTE
数据将在[-128, 127]范围内返回。TIFF_UNDEFINED
值被视为TIFF_BYTE
。TIFF_SLONG
、TIFF_LONG
、TIFF_FLOAT
、TIFF_DOUBLE
或TIFF_IFD_POINTER
格式的数据将简单地转换为int
,可能会出现截断。TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据将通过使用双精度算术将分子除以分母,然后转换为int
来评估。可能会发生精度丢失和截断。TIFF_ASCII
格式的数据将被解析为Double.parseDouble
方法,结果转换为int
。- 参数:
-
index
- 数据的索引。 - 返回:
-
给定索引处的数据作为
int
。
-
getAsLong
public long getAsLong(int index) 将数据以long
的形式返回,可以是任何格式的数据。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为无符号的;即,不会发生符号扩展,返回值将在[0, 255]范围内。TIFF_SBYTE
数据将在[-128, 127]范围内返回。TIFF_FLOAT
和TIFF_DOUBLE
中的数据将简单地转换为long
,可能会出现截断。TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据将通过使用双精度算术将分子除以分母,然后转换为long
来评估。可能会发生精度丢失和截断。TIFF_ASCII
格式的数据将被解析为Double.parseDouble
方法,结果转换为long
。- 参数:
-
index
- 数据的索引。 - 返回:
-
给定索引处的数据作为
long
。
-
getAsFloat
public float getAsFloat(int index) 将数据以float
的形式返回,可以是任何格式的数据。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为无符号的;即,不会发生符号扩展,返回值将在[0, 255]范围内。TIFF_SBYTE
数据将在[-128, 127]范围内返回。TIFF_SLONG
、TIFF_LONG
、TIFF_DOUBLE
或TIFF_IFD_POINTER
格式的数据将简单地转换为float
,可能会出现截断。TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据将通过使用双精度算术将分子除以分母,然后转换为float
来评估。TIFF_ASCII
格式的数据将被解析为Double.parseDouble
方法,结果转换为float
。- 参数:
-
index
- 数据的索引。 - 返回:
-
给定索引处的数据作为
float
。
-
getAsDouble
public double getAsDouble(int index) 将数据以double
的形式返回,可以是任何格式的数据。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为无符号的;即,不会发生符号扩展,返回值将在[0, 255]范围内。TIFF_SBYTE
数据将在[-128, 127]范围内返回。TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据将通过使用双精度算术将分子除以分母来评估。TIFF_ASCII
格式的数据将被解析为Double.parseDouble
方法。- 参数:
-
index
- 数据的索引。 - 返回:
-
给定索引处的数据作为
double
。
-
getAsString
将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
返回一个包含数据项的人类可读版本的String
。类型为TIFFTag.TIFF_RATIONAL
或TIFF_SRATIONAL
的数据表示为由一个'/'
字符分隔的两个整数。如果TIFFTag.TIFF_RATIONAL
或TIFF_SRATIONAL
的分子是分母的整数倍,则该值表示为"q/1"
,其中q
是分子和分母的商。- 参数:
-
index
- 数据的索引。 - 返回:
-
给定索引处的数据作为一个
String
。 - 抛出:
-
ClassCastException
- 如果字段不是合法字段类型之一。
-
hasDirectory
public boolean hasDirectory()返回字段是否具有TIFFDirectory
。- 返回:
- 如果 getDirectory() 返回非空,则返回 true。
-
getDirectory
返回关联的TIFFDirectory
,如果可用。如果未设置目录,则将返回null
。- 返回:
- TIFFDirectory 实例或 null。
-
clone
克隆字段及其中包含的所有信息。- 覆盖:
-
clone
在类Object
- 返回:
-
此
TIFFField
的克隆。 - 抛出:
-
CloneNotSupportedException
- 如果无法克隆实例。 - 参见:
-