Crop-to-fit image in Android

前端 未结 3 1847
深忆病人
深忆病人 2020-12-29 00:03

I\'ve been trying this for some time, I would like to create a wallpaper from a Bitmap. Let\'s say the desired wallpaper size is 320x480, and the source image s

3条回答
  •  粉色の甜心
    2020-12-29 00:59

    Thanks to open source, I found the answer from Android Gallery source code here at line 230 :-D

    croppedImage = Bitmap.createBitmap(mOutputX, mOutputY, Bitmap.Config.RGB_565);
    Canvas canvas = new Canvas(croppedImage);
    
    Rect srcRect = mCrop.getCropRect();
    Rect dstRect = new Rect(0, 0, mOutputX, mOutputY);
    
    int dx = (srcRect.width() - dstRect.width()) / 2;
    int dy = (srcRect.height() - dstRect.height()) / 2;
    
    // If the srcRect is too big, use the center part of it.
    srcRect.inset(Math.max(0, dx), Math.max(0, dy));
    
    // If the dstRect is too big, use the center part of it.
    dstRect.inset(Math.max(0, -dx), Math.max(0, -dy));
    
    // Draw the cropped bitmap in the center
    canvas.drawBitmap(mBitmap, srcRect, dstRect, null);
    

提交回复
热议问题