编程语言
首页 > 编程语言> > java – 在Bitmapfactory中解码图像的特定区域?

java – 在Bitmapfactory中解码图像的特定区域?

作者:互联网

我正在处理太大的GeoTiff / PNG文件,无法在我的代码中进行整体处理.

是否有可能在bitmapfactory中解码文件的特定区域(例如,由两个x,y坐标给出)?在http://developer.android.com/reference/android/graphics/BitmapFactory.html(Android的开发人员参考)中找不到类似的东西.

谢谢!

随着kcoppock的暗示我已经设置了以下解决方案.

虽然我想知道为什么rect需要由Rect(左,下,右,顶)而不是Rect(左,上,右,下)初始化…

示例电话:

Bitmap myBitmap = loadBitmapRegion(context, R.drawable.heightmap,
    0.08f, 0.32f, 0.13f, 0.27f);

功能:

public static Bitmap loadBitmapRegion(
    Context context, int resourceID,
    float regionLeft, float regionTop,
    float regionRight, float regionBottom) {

    // Get input stream for resource
    InputStream is = context.getResources().openRawResource(resourceID);

    // Set options
    BitmapFactory.Options opt = new BitmapFactory.Options();
    //opt.inPreferredConfig = Bitmap.Config.ARGB_8888; //standard

    // Create decoder
    BitmapRegionDecoder decoder = null;
    try {
        decoder = BitmapRegionDecoder.newInstance(is, false);
    } catch (IOException e) {
        e.printStackTrace();
    }

    // Get resource dimensions
    int h = decoder.getHeight();
    int w = decoder.getWidth();

    // Set region to decode
    Rect region = new Rect(
            Math.round(regionLeft*w), Math.round(regionBottom*h),
            Math.round(regionRight*w), Math.round(regionTop*h));

    // Return bitmap
    return decoder.decodeRegion(region, opt);

}

解决方法:

您应该查看BitmapRegionDecoder.它似乎准确描述了您正在寻找的用例.

标签:java,android,bitmapfactory,bitmapregiondecoder
来源: https://codeday.me/bug/20190624/1282044.html