- java.lang.Object
-
- javax.imageio.plugins.tiff.TIFFField
-
- All Implemented Interfaces:
-
Cloneable
public final class TIFFField extends Object implements Cloneable
表示TIFF 6.0图像文件目录中的字段的类。TIFF图像文件目录(IFD)中的字段被定义为伴随有相同数据类型的值序列的标签号。 TIFF 6.0定义了12种数据类型; TIFF技术说明1中的第13类型
TIFF Data Type to Java Data Type Mapping TIFF Data Type Java Constant Java Data Type Java Type NameIFD
在TIFF Specification Supplement 1中定义。这些TIFF数据类型由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
- 另请参见:
-
TIFFDirectory
,TIFFTag
-
-
构造方法摘要
构造方法 Constructor 描述 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
。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 TIFFField
clone()
克隆该字段及其中包含的所有信息。static Object
createArrayForType(int dataType, int count)
创建一个适合指定数据类型的数组。static TIFFField
createFromMetadataNode(TIFFTagSet tagSet, Node node)
从TIFF本机图像元数据节点创建一个TIFFField
。byte[]
getAsBytes()
将数据作为未解释的数组返回byte
。char[]
getAsChars()
返回TIFFTag.TIFF_SHORT
数据作为阵列char
S(无符号的16位整数)。double
getAsDouble(int index)
以double
形式返回任何格式的double
。double[]
getAsDoubles()
返回TIFFTag.TIFF_DOUBLE
数据作为double
s(64位浮点值)的数组。float
getAsFloat(int index)
以float
格式返回任何格式的float
。float[]
getAsFloats()
返回TIFFTag.TIFF_FLOAT
数据作为float
s(32位浮点值)的数组。int
getAsInt(int index)
以int
形式返回任何格式的int
。int[]
getAsInts()
返回TIFFTag.TIFF_SLONG
数据作为阵列int
秒(带符号的32位整数)。long
getAsLong(int index)
以long
格式返回任何格式的long
。long[]
getAsLongs()
返回TIFFTag.TIFF_LONG
或TIFF_IFD_POINTER
数据作为long
s(带符号的64位整数)的数组。Node
getAsNativeNode()
返回TIFFField
作为名为"TIFFField"
或"TIFFIFD"
的节点,如TIFF本机图像元数据规范中所述。long[]
getAsRational(int index)
返回一个TIFFTag.TIFF_RATIONAL数据项作为一个双元素的int数组。long[][]
getAsRationals()
返回TIFFTag.TIFF_RATIONAL
数据作为2元件数组的数组long
秒。short[]
getAsShorts()
返回TIFFTag.TIFF_SSHORT
数据作为short
s(带符号的16位整数)的数组。int[]
getAsSRational(int index)
返回TIFFTag.TIFF_SRATIONAL
作为一个二单元阵列的数据项int
秒。int[][]
getAsSRationals()
返回TIFFTag.TIFF_SRATIONAL
数据作为2元件数组的数组int
秒。String
getAsString(int index)
返回TIFFTag.TIFF_ASCII
值作为String
。int
getCount()
返回字段中存在的数据项数。Object
getData()
返回与该字段关联的数据对象的引用。TIFFDirectory
getDirectory()
返回相关联的TIFFDirectory
(如果可用)。TIFFTag
getTag()
检索与此字段关联的标签。int
getTagNumber()
检索范围[0,65535]
的标签号。int
getType()
返回字段中存储的数据类型。static int
getTypeByName(String typeName)
返回与提供的数据类型名称相对应的数据类型常量。static String
getTypeName(int dataType)
返回提供的数据类型常量的名称。String
getValueAsString(int index)
返回一个String
其中包含数据项的人性化版本。boolean
hasDirectory()
返回字段是否有一个TIFFDirectory
。boolean
isIntegral()
指示与该字段相关联的值是否为整数数据类型。
-
-
-
构造方法详细信息
-
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
字段,返回的值为String
s,而不是文件表示中的数据总长度。- 结果
- 存在于该字段中的数据项的数量。
-
getData
public Object getData()
返回与该字段关联的数据对象的引用。- 结果
- 字段的数据对象。
-
getAsBytes
public byte[] getAsBytes()
以byte
的无法解释的数组的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
s(无符号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
s(带符号的64位整数)的数组。- 结果
-
数据为
long
的数组。 - 异常
-
ClassCastException
- 如果该字段不是类型TIFF_LONG
或TIFF_IFD_POINTER
。
-
getAsFloats
public float[] getAsFloats()
返回TIFFTag.TIFF_FLOAT
数据作为float
s(32位浮点值)的数组。- 结果
-
数据为
float
的数组。 - 异常
-
ClassCastException
- 如果字段不是类型TIFF_FLOAT
。
-
getAsDoubles
public double[] getAsDoubles()
返回TIFFTag.TIFF_DOUBLE
数据作为double
s(64位浮点值)的数组。- 结果
-
数据为
double
的数组。 - 异常
-
ClassCastException
- 如果字段不是类型TIFF_DOUBLE
。
-
getAsSRationals
public int[][] getAsSRationals()
返回TIFFTag.TIFF_SRATIONAL
数据作为2元件数组的数组int
秒。- 结果
- 数据作为一系列符号理性。
- 异常
-
ClassCastException
- 如果字段不是类型TIFF_SRATIONAL
。
-
getAsRationals
public long[][] getAsRationals()
返回TIFFTag.TIFF_RATIONAL
数据作为2元件数组的数组long
秒。- 结果
- 数据作为无符号理性的数组。
- 异常
-
ClassCastException
- 如果字段不是类型TIFF_RATIONAL
。
-
getAsInt
public int getAsInt(int index)
以int
形式返回任何格式的int
。TIFFTag.TIFF_BYTE
值被视为无符号; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE
数据将返回范围[TIFF_SBYTE
]。A
TIFF_UNDEFINED
价值被视为是一个TIFF_BYTE
。在数据
TIFF_SLONG
,TIFF_LONG
,TIFF_FLOAT
,TIFF_DOUBLE
或者TIFF_IFD_POINTER
格式简单地转换为int
,并可从截断受到影响。TIFF_SRATIONAL
或TIFF_RATIONAL
格式中的数据通过使用双精度算术将分子除以分母,然后转换为int
来进行int
。 可能会发生精度损失和截断。TIFF_ASCII
格式的数据TIFF_ASCII
Double.parseDouble
方法进行解析,结果为int
。- 参数
-
index
- 数据的索引。 - 结果
-
给定指数的数据为
int
。
-
getAsLong
public long getAsLong(int index)
以long
形式返回任何格式的long
。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为无符号; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE
数据将返回范围[TIFF_SBYTE
]。TIFF_FLOAT
和TIFF_DOUBLE
中的数据简单地转换为long
并可能遭受截断。TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据通过使用双精度算术将分子除以分母,然后转换为long
来进行long
。 可能会发生精度损失和截断。TIFF_ASCII
格式的数据TIFF_ASCII
Double.parseDouble
方法进行解析,结果转换为long
。- 参数
-
index
- 数据的索引。 - 结果
-
给定指数的数据为
long
。
-
getAsFloat
public float getAsFloat(int index)
以float
形式返回任何格式的float
。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为无符号; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE
数据将返回范围[TIFF_SBYTE
]。在数据
TIFF_SLONG
,TIFF_LONG
,TIFF_DOUBLE
,或TIFF_IFD_POINTER
格式简单地转换为float
,并可从截断受到影响。TIFF_SRATIONAL
或TIFF_RATIONAL
格式中的数据通过使用双精度算术将分子除以分母然后转换为float
来进行float
。TIFF_ASCII
格式的数据TIFF_ASCII
Double.parseDouble
方法进行解析,结果转换为float
。- 参数
-
index
- 数据的索引。 - 结果
-
给定指数的数据为
float
。
-
getAsDouble
public double getAsDouble(int index)
以double
形式返回任何格式的double
。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为无符号; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE
数据将返回范围[TIFF_SBYTE
]。TIFF_SRATIONAL
或TIFF_RATIONAL
格式中的数据通过使用双精度算术将分子除以分母来进行评估。TIFF_ASCII
格式的数据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()返回非空值,则为true。
-
getDirectory
public TIFFDirectory getDirectory()
返回相关联的TIFFDirectory
(如果可用)。 如果没有设置目录,那么将返回null
。- 结果
- TIFFDirectory实例或null。
-
clone
public TIFFField clone() throws CloneNotSupportedException
克隆该字段及其中包含的所有信息。- 重写:
-
clone
中的Object
- 结果
-
这个克隆
TIFFField
。 - 异常
-
CloneNotSupportedException
- 如果实例无法克隆。 - 另请参见:
-
Cloneable
-
-