我正在尝试裁剪和缩放给定的位图,但只有缩放有效。
我究竟做错了什么?

private Bitmap CropAndShrinkBitmap(Bitmap io_BitmapFromFile, int i_NewWidth, int i_NewHeight)
{
    int cuttingOffset = 0;
    int currentWidth = i_BitmapFromFile.getWidth();
    int currentHeight = i_BitmapFromFile.getHeight();

    if(currentWidth > currentHeight)
    {
        cuttingOffset = currentWidth - currentHeight;
        Bitmap.createBitmap(i_BitmapFromFile, cuttingOffset/2, 0, currentWidth - cuttingOffset, currentHeight);
    }
    else
    {
        cuttingOffset = i_NewHeight - currentWidth;
        Bitmap.createBitmap(i_BitmapFromFile, 0, cuttingOffset/2, currentWidth, currentHeight - cuttingOffset);
    }
    Bitmap fixedBitmap = Bitmap.createScaledBitmap(i_BitmapFromFile, i_NewWidth, i_NewHeight, false)  ;

    return i_BitmapFromFile;
}


描述说:“ createBitmap返回一个不变的位图”。
那什么意识?这是我的问题的原因吗?

最佳答案

裁剪可能工作正常,但是裁剪后的结果Bitmap对象是从createBitmap()返回的,原始对象没有被修改(如上所述,因为Bitmap实例是不可变的)。如果想要裁剪的结果,则必须获取返回值。

Bitmap cropped = Bitmap.createBitmap(i_BitmapFromFile, cuttingOffset/2, 0, currentWidth - cuttingOffset, currentHeight);


然后,您可以根据自己的意愿做任何进一步的工作。

高温超导

10-04 18:32