Android Image Resize基本

时间:2011-11-25 11:34:23

标签: android android-layout

我喜欢调整位图的大小,如果它很大,请将它放在表面视图中的特定位置,我需要获取设备宽度和高度,然后将位图大小放在表面视图中,然后拍摄另一张图片调整大小并将其放置在我喜欢的任何位置。 如何首先知道位置坐标(放置第二个图像 - 如果更大/更小的屏幕布局不应改变,这应该与设备无关)

以及如何缩放大位图并设置为背景,以便我可以在其上绘制图像。 我的代码:

final int canvasWidth = getWidth();
final int canvasHeight = getHeight();

int imageWidth = img.getWidth();
int imageHeight = img.getHeight();

float scaleFactor = Math.min( (float)canvasWidth / imageWidth, 
                              (float)canvasHeight / imageHeight );
Bitmap scaled = Bitmap.createScaledBitmap(  img, 
                                            (int)(scaleFactor * imageWidth), 
                                            (int)(scaleFactor * imageHeight), 
                                            true );
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(scaled, 10, 10, null);

这缩放了大图像,但它不适合整个屏幕“img - bitmap就像一个背景图像”

有人可以帮助我理解调整大小的基础知识(我是新的,因此很难理解调整大小)来调整图像大小以适应屏幕并将任何图像调整为较小的图像并将其放在我喜欢的任何位置。

1 个答案:

答案 0 :(得分:1)

将您的位图存储为操作源并使用ImageView显示它:

Bitmap realImage = BitmapFactory.decodeFile(filePathFromActivity.toString());

Bitmap newBitmap = scaleDown(realImage, MAX_IMAGE_SIZE, true);


imageView.setImageBitmap(newBitmap);


//scale down method
public static Bitmap scaleDown(Bitmap realImage, float maxImageSize,
        boolean filter) {
    float ratio = Math.min(
            (float) maxImageSize / realImage.getWidth(),
            (float) maxImageSize / realImage.getHeight());
    int width = Math.round((float) ratio * realImage.getWidth());
    int height = Math.round((float) ratio * realImage.getHeight());

    Bitmap newBitmap = Bitmap.createScaledBitmap(realImage, width,
            height, filter);
    return newBitmap;
}

将ImageView的宽度和高度设置为“fill_parent”。