java.awt.image.ComponentSampleModel#getBankIndices()源码实例Demo

下面列出了java.awt.image.ComponentSampleModel#getBankIndices() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: dragonwell8_jdk   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码2 项目: TencentKona-8   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码3 项目: jdk8u60   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码4 项目: openjdk-8   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码5 项目: openjdk-jdk8u   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码7 项目: Bytecoder   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码8 项目: jdk8u_jdk   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码9 项目: jdk8u-jdk   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码10 项目: openjdk-8-source   文件: ByteInterleavedRaster.java
/*** Analyzes a ComponentSampleModel to determine if it can function
 * as a PixelInterleavedSampleModel.  In order to do so, it must use
 * only bank 0 of its DataBuffer, and the data offsets must span a range
 * of less than pixelStride.
 *
 * <p> These properties are trivially true for a 1-banded SampleModel.
 */
private boolean isInterleaved(ComponentSampleModel sm) {
    // Analyze ComponentSampleModel to determine if it has the
    // properties of a PixelInterleavedSampleModel

    int numBands = sampleModel.getNumBands();
    if (numBands == 1) {
        return true;
    }

    // Determine banks used
    int[] bankIndices = sm.getBankIndices();
    for (int i = 0; i < numBands; i++) {
        if (bankIndices[i] != 0) {
            return false;
        }
    }

    // Determine range of band offsets
    int[] bandOffsets = sm.getBandOffsets();
    int minOffset = bandOffsets[0];
    int maxOffset = minOffset;
    for (int i = 1; i < numBands; i++) {
        int offset = bandOffsets[i];
        if (offset < minOffset) {
            minOffset = offset;
        }
        if (offset > maxOffset) {
            maxOffset = offset;
        }
    }
    if (maxOffset - minOffset >= sm.getPixelStride()) {
        return false;
    }

    return true;
}
 
源代码11 项目: jdk1.8-source-analysis   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码12 项目: openjdk-8   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码13 项目: TencentKona-8   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码14 项目: jdk8u60   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码15 项目: openjdk-jdk8u   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码16 项目: openjdk-jdk8u-backup   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码17 项目: Bytecoder   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码18 项目: openjdk-jdk9   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码19 项目: jdk8u-jdk   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}
 
源代码20 项目: jdk8u_jdk   文件: ImageUtil.java
/**
 * Returns whether the image has contiguous data across rows.
 */
public static final boolean imageIsContiguous(RenderedImage image) {
    SampleModel sm;
    if(image instanceof BufferedImage) {
        WritableRaster ras = ((BufferedImage)image).getRaster();
        sm = ras.getSampleModel();
    } else {
        sm = image.getSampleModel();
    }

    if (sm instanceof ComponentSampleModel) {
        // Ensure image rows samples are stored contiguously
        // in a single bank.
        ComponentSampleModel csm = (ComponentSampleModel)sm;

        if (csm.getPixelStride() != csm.getNumBands()) {
            return false;
        }

        int[] bandOffsets = csm.getBandOffsets();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bandOffsets[i] != i) {
                return false;
            }
        }

        int[] bankIndices = csm.getBankIndices();
        for (int i = 0; i < bandOffsets.length; i++) {
            if (bankIndices[i] != 0) {
                return false;
            }
        }

        return true;
    }

    // Otherwise true if and only if it's a bilevel image with
    // a MultiPixelPackedSampleModel, 1 bit per pixel, and 1 bit
    // pixel stride.
    return ImageUtil.isBinary(sm);
}