如何解码图像文件

时间:2012-06-20 05:44:46

标签: android bitmap

我的图像高度为200和400像素。我想要显示所有这些图像的方式是高度200像素。我的意思是说无论图像的大小,显示该图像我想显示高达200像素的图像。图像的其余部分是隐藏的。那怎么可以做到。我使用了一个代码进行解码,但是在这里它会拉伸更大尺寸的图像,然后显示它。在我的情况下,我不希望图像伸展,但只显示高达200像素的图像。

使用的代码

private Bitmap decodeFile(File f)
{
    try 
    {
        // decode image size
        BitmapFactory.Options o = new BitmapFactory.Options();

        // Find the correct scale value.
        final int REQUIRED_SIZE = 200;
        int height_tmp = o.outHeight;
        while(true)
        {
            if(height_tmp/2 < REQUIRED_SIZE)
                break;          
            height_tmp/=2;
        }

        o.inSampleSize = height_tmp;
        return BitmapFactory.decodeStream(new FileInputStream(f), null, o);
    } 
    catch (FileNotFoundException e) 
    {}
    return null;
}

2 个答案:

答案 0 :(得分:1)

只需编辑main.xml

    android:layout_width="200dp"
    android:layout_height="200dp"

答案 1 :(得分:1)

好的,请尝试使用layoutParams以编程方式执行相同的任务。

  public void taskCompleted ()
{

    ImageView iv = new ImageView(this);


    Bitmap completionBitmap = null;
    completionBitmap = BitmapFactory.decodeFile(CommonMessageConstants.BASE_IMAGE_FOLDER_ON_DEVICE +"completionimage.png");


    iv.setImageBitmap(completionBitmap);
    RelativeLayout rl = (RelativeLayout) findViewById(R.id.randomImageView);
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    //lp.setMargins(200, 200, 0, 0);

    lp.addRule(RelativeLayout.CENTER_IN_PARENT);


    rl.addView(iv, lp);

    Toast.makeText (getApplicationContext(), msg, Toast.LENGTH_SHORT).show ();

}