指定进行 i/o 时应用的抽取十分之一的二次取样。sourcexsubsampling 和 sourceysubsampling 参数指定二次取样的周期(即 每个源像素之后前进的行数和列数)。具体地说,周期为 1 将对每行或每列使用二次取样;周期为 2 则每隔一行或一列使用。subsamplingxoffset 和 subsamplingyoffset 参数指定距离第一个二次取样像素的区域(或图像)原点的偏移量。在将一个非常大的源图像二次取样到将组合成一个完整的二次取样图像的目标区域中时,调整二次取样网格的原点对避免裂缝很有用。大多数用户只要让这些参数为 0 即可。
要使用的像素行和扫描行数量的计算如下所示。
扫描行中二次取样像素数的计算方式如下
truncate[(width - subsamplingxoffset + sourcexsubsampling - 1) / sourcexsubsampling]。
如果在该区域中此宽度为零,则抛出 illegalstateexception。
可以用类似的方法计算要使用的扫描行数。
可以将二次取样网格设置为从源区域原点以外的其他某个地方开始,如果正使用源区域创建大型图像的二次取样 tile,其中 tile 的宽度和高度不是二次取样周期的倍数,这将非常有用。如果在二次取样网格中不能使 tile 保持一致,则在 tile 的边界上会出现某些误差产物。通过调整每个 tile 的二次取样网格偏移量来校正,可避免这些误差产物。权宜之计是,为了避免出现误差产物,tile 的大小并不都是相同的。在这种情况下使用的网格偏移量的计算方式如下:
iis7站长之家 offset = [period - (region offset modulo period)] modulo period)
如果 sourcexsubsampling 或 sourceysubsampling 为 0 或负数,则将抛出 illegalargumentexception。
如果 subsamplingxoffset 或 subsamplingyoffset 为负数或大于等于相应的周期,则将抛出 illegalargumentexception。
没有 unsetsourcesubsampling 方法;调用 setsourcesubsampling(1, 1, 0, 0) 来恢复默认值即可。
- 参数:
sourcexsubsampling - 要在像素之间前进的列数。sourceysubsampling - 要在像素之间前进的行数。subsamplingxoffset - 该区域或图像(如果没有设置区域)中第一次二次取样的水平偏移量。subsamplingyoffset - 该区域或图像(如果没有设置区域)中第一次二次取样的水平偏移量。
- 抛出:
illegalargumentexception - 如果任意一个周期为负数或 0,或者任意一个网格偏移量为负数或大于相应的周期。
illegalstateexception - 如果源区域中二次取样输出不包含任何像素。