当前位置: 首页>>代码示例>>Java>>正文


Java ImageReadParam.getSourceBands方法代码示例

本文整理汇总了Java中javax.imageio.ImageReadParam.getSourceBands方法的典型用法代码示例。如果您正苦于以下问题:Java ImageReadParam.getSourceBands方法的具体用法?Java ImageReadParam.getSourceBands怎么用?Java ImageReadParam.getSourceBands使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在javax.imageio.ImageReadParam的用法示例。


在下文中一共展示了ImageReadParam.getSourceBands方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: prepareRead

import javax.imageio.ImageReadParam; //导入方法依赖的package包/类
private void prepareRead(int imageIndex, ImageReadParam param)
        throws IOException {
    if (stream == null) {
        throw new IllegalStateException("Input not set!");
    }

    // A null ImageReadParam means we use the default
    if (param == null) {
        param = getDefaultReadParam();
    }

    this.imageReadParam = param;

    seekToImage(imageIndex);

    this.tileOrStripWidth = getTileOrStripWidth();
    this.tileOrStripHeight = getTileOrStripHeight();
    this.planarConfiguration = getPlanarConfiguration();

    this.sourceBands = param.getSourceBands();
    if (sourceBands == null) {
        sourceBands = new int[numBands];
        for (int i = 0; i < numBands; i++) {
            sourceBands[i] = i;
        }
    }

    // Initialize the destination image
    Iterator<ImageTypeSpecifier> imageTypes = getImageTypes(imageIndex);
    ImageTypeSpecifier theImageType
            = ImageUtil.getDestinationType(param, imageTypes);

    int destNumBands = theImageType.getSampleModel().getNumBands();

    this.destinationBands = param.getDestinationBands();
    if (destinationBands == null) {
        destinationBands = new int[destNumBands];
        for (int i = 0; i < destNumBands; i++) {
            destinationBands[i] = i;
        }
    }

    if (sourceBands.length != destinationBands.length) {
        throw new IllegalArgumentException(
                "sourceBands.length != destinationBands.length");
    }

    for (int i = 0; i < sourceBands.length; i++) {
        int sb = sourceBands[i];
        if (sb < 0 || sb >= numBands) {
            throw new IllegalArgumentException(
                    "Source band out of range!");
        }
        int db = destinationBands[i];
        if (db < 0 || db >= destNumBands) {
            throw new IllegalArgumentException(
                    "Destination band out of range!");
        }
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:61,代码来源:TIFFImageReader.java

示例2: readRaster

import javax.imageio.ImageReadParam; //导入方法依赖的package包/类
@Override
    public Raster readRaster(int imageIndex, ImageReadParam param)
            throws IOException {
        checkIndex(imageIndex);

        Rectangle sourceRegion = new Rectangle();
        Rectangle destRegion = new Rectangle();
        computeRegions(param, getWidth(imageIndex), getHeight(imageIndex),
                       null, sourceRegion, destRegion);

        // Set everything to default values
        int sourceXSubsampling = param != null ? param.getSourceXSubsampling()
                : 1;
        int sourceYSubsampling = param != null ? param.getSourceYSubsampling()
                : 1;
        Point destinationOffset = param != null ? param.getDestinationOffset()
                : new Point(0, 0);

        ImageSubheader subheader;
        try {
            subheader = record.getImages()[imageIndex].getSubheader();
        } catch (NITFException e) {
            throw new IOException(ExceptionUtils.getStackTrace(e));
        }
//        String irep = subheader.getImageRepresentation().getStringData().trim();
        String pvType = subheader.getPixelValueType().getStringData().trim();
        int nbpp = subheader.getNumBitsPerPixel().getIntData();
        int bandCount = subheader.getBandCount();

        // make the band offsets array, for the output
        int[] bandOffsets;
        int[] sourceBands = param != null ? param.getSourceBands() : null;
        if (param != null && param.getDestinationBands() != null)
            bandOffsets = param.getDestinationBands();
        else if (param != null && sourceBands != null) {
            bandOffsets = new int[sourceBands.length];
            System.arraycopy(sourceBands, 0, bandOffsets, 0, bandOffsets.length);
        } else {
            // Setup band offsets -- TODO should we really read ALL bands by
            // default?
            bandOffsets = new int[bandCount];
            for (int i = 0; i < bandOffsets.length; i++)
                bandOffsets[i] = i;
        }

        int nBytes = ((nbpp - 1) / 8) + 1;

        int bufType;

        // byte
        if (nBytes == 1) {
            bufType = DataBuffer.TYPE_BYTE;
        }
        // short
        else if (nBytes == 2) {
            bufType = DataBuffer.TYPE_USHORT;
        }
        // float
        else if (nBytes == 4 && pvType.equals("R")) {
            bufType = DataBuffer.TYPE_FLOAT;
        }
        // double
        else if (nBytes == 8 && pvType.equals("R")) {
            bufType = DataBuffer.TYPE_DOUBLE;
        } else {
            throw new NotImplementedException("not yet implemented");
        }

        WritableRaster ras = ImageIOUtils
                .makeGenericPixelInterleavedWritableRaster(destRegion.width,
                                                           destRegion.height, bandOffsets.length, bufType);
        checkReadParamBandSettings(param, bandCount, ras.getSampleModel()
                .getNumBands());
        readRaster(imageIndex, sourceRegion, destRegion, sourceXSubsampling,
                   sourceYSubsampling, bandOffsets, nBytes, destinationOffset, ras);
        return ras;
    }
 
开发者ID:senbox-org,项目名称:s2tbx,代码行数:78,代码来源:NITFReader.java

示例3: read

import javax.imageio.ImageReadParam; //导入方法依赖的package包/类
@Override
public BufferedImage read(int imageIndex, ImageReadParam param)
        throws IOException {
    readHeader();
    Raster raster = readRaster(imageIndex, param);

    // get the requested number of destination bands (or 0 for all)
    int numDestBands = param != null ? (param.getDestinationBands() != null ? param
            .getDestinationBands().length
            : param.getSourceBands() != null ? param.getSourceBands().length
            : 0)
            : 0;

    // try to find a good match for the specifier
    ImageTypeSpecifier imageType = null, firstType = null;
    Iterator<ImageTypeSpecifier> imageTypes = getImageTypes(imageIndex);
    while (imageTypes.hasNext() && imageType == null) {
        ImageTypeSpecifier currentImageType = imageTypes.next();
        if (firstType == null)
            firstType = currentImageType;

        if (currentImageType.getNumBands() == numDestBands)
            imageType = currentImageType;
    }

    if (imageType == null) {
        if (firstType == null)
            throw new IOException(
                    "Unable to determine the ImageTypeSpecifier");
        else
            imageType = firstType;
    }

    try {
        ImageSubheader subheader = record.getImages()[imageIndex]
                .getSubheader();
        String pvType = subheader.getPixelValueType().getStringData()
                .trim();
        int nbpp = subheader.getNumBitsPerPixel().getIntData();
        int nBytes = ((nbpp - 1) / 8) + 1;

        if (nBytes == 1 || nBytes == 2
                || (nBytes == 4 && pvType.equals("R"))
                || (nBytes == 8 && pvType.equals("R"))) {
            return ImageIOUtils.rasterToBufferedImage(raster, imageType);
        }
    } catch (NITFException e) {
        throw new IOException(ExceptionUtils.getStackTrace(e));
    }
    throw new NotImplementedException(
            "Image pixel type or bits per pixel not yet supported");
}
 
开发者ID:senbox-org,项目名称:s2tbx,代码行数:53,代码来源:NITFReader.java

示例4: prepareRead

import javax.imageio.ImageReadParam; //导入方法依赖的package包/类
private void prepareRead(int imageIndex, ImageReadParam param)
    throws IOException {
    if (stream == null) {
        throw new IllegalStateException("Input not set!");
    }

    // A null ImageReadParam means we use the default
    if (param == null) {
        param = getDefaultReadParam();
    }

    this.imageReadParam = param;

    seekToImage(imageIndex);

    this.tileOrStripWidth = getTileOrStripWidth();
    this.tileOrStripHeight = getTileOrStripHeight();
    this.planarConfiguration = getPlanarConfiguration();

    this.sourceBands = param.getSourceBands();
    if (sourceBands == null) {
        sourceBands = new int[numBands];
        for (int i = 0; i < numBands; i++) {
            sourceBands[i] = i;
        }
    }

    // Initialize the destination image
    Iterator imageTypes = getImageTypes(imageIndex);
    ImageTypeSpecifier theImageType =
        ImageUtil.getDestinationType(param, imageTypes);

    int destNumBands = theImageType.getSampleModel().getNumBands();

    this.destinationBands = param.getDestinationBands();
    if (destinationBands == null) {
        destinationBands = new int[destNumBands];
        for (int i = 0; i < destNumBands; i++) {
            destinationBands[i] = i;
        }
    }

    if (sourceBands.length != destinationBands.length) {
        throw new IllegalArgumentException(
                          "sourceBands.length != destinationBands.length");
    }

    for (int i = 0; i < sourceBands.length; i++) {
        int sb = sourceBands[i];
        if (sb < 0 || sb >= numBands) {
            throw new IllegalArgumentException(
                                              "Source band out of range!");
        }
        int db = destinationBands[i];
        if (db < 0 || db >= destNumBands) {
            throw new IllegalArgumentException(
                                         "Destination band out of range!");
        }
    }
}
 
开发者ID:scifio,项目名称:scifio-jai-imageio,代码行数:61,代码来源:TIFFImageReader.java


注:本文中的javax.imageio.ImageReadParam.getSourceBands方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。