0

我正在尝试创建一个位图,而我所拥有的只是 saveUri 和 imagePath。我相信我正在正确检索 imagePath,因为当我去查看照片的照片的实际属性和记录的路径时,它们是相同的,所以我认为这是我创建位图的方式的问题。这是我使用的代码:

if (_bitmap == null)

{
    string imagePath = null;
    try
    {
        imagePath = GetRealPathFromURI(_saveUri);
        LogManager.Info("********the image path is", imagePath);
    }
    catch
    {
        imagePath = _saveUri.Path;
    }

    // First decode with inJustDecodeBounds=true to check dimensions
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.InJustDecodeBounds = true;
    BitmapFactory.DecodeFile(imagePath, options);
    var width = (int)Math.Round(_outputX * 0.5);
    var heigth = (int)Math.Round(_outputY * 0.5);
    options.InSampleSize = BitmapTools.CalculateInSampleSize(options, width, width * heigth);
    options.InJustDecodeBounds = false;
    options.InDensity = 160;

    try
    {
        _bitmap = BitmapFactory.DecodeFile(imagePath, options);
    }
    catch
    {
        GC.Collect();
        _bitmap = BitmapFactory.DecodeFile(imagePath, options);
    }
}
if (_bitmap == null)
   LogManager.Info("********the bitmap width is:  ", "well bloody hell the bitmap is null");
else
   LogManager.Info("********the bitmap width is:  ", _bitmap.Width.ToString());

在最后两行,位图永远不会为空,但它的宽度始终为 1,当我显示它时没有图像。这是用于在 Monodroid 上创建、显示和保存图像,但这与这个问题并不太相关。

4

0 回答 0