Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中调整图像大小_Java_Android - Fatal编程技术网

Java 在android中调整图像大小

Java 在android中调整图像大小,java,android,Java,Android,我想调整我的图像大小(原始大小为1080p),但它们无法正确调整大小,我不知道为什么。有时候图像的大小不合适。在我的模拟器和旧的800*480智能手机上,它工作正常,但在我的带有1280*768的nexus 4上,事情看起来不太对劲。读取正确的屏幕分辨率没有问题。我的调整大小程序有一个错误。请帮帮我。这里有一个片段: private Bitmap bitmap,bitmap1; private float factor; WindowManager wm = (WindowManager) c

我想调整我的图像大小(原始大小为1080p),但它们无法正确调整大小,我不知道为什么。有时候图像的大小不合适。在我的模拟器和旧的800*480智能手机上,它工作正常,但在我的带有1280*768的nexus 4上,事情看起来不太对劲。读取正确的屏幕分辨率没有问题。我的调整大小程序有一个错误。请帮帮我。这里有一个片段:

private Bitmap bitmap,bitmap1;
private float factor;

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics displaymetrics = new DisplayMetrics();
    wm.getDefaultDisplay().getMetrics(displaymetrics);
    width = displaymetrics.widthPixels;
    height = displaymetrics.heightPixels;

factor = (float)height/1080; 

Int bitmapheight,bitmapwidth;
bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.picture),(int)(factor*BitmapFactory.decodeResource(getResources(), R.drawable.picture).getwidth() ,(int)(factor*BitmapFactory.decodeResource(getResources(), R.drawable.picture).getHeight(), true);

canvas.drawBitmap(bitmap,.....
最终,nexus上的高度没有调整为768/1080*位图高度,我不知道为什么。注意,其他一切都是有效的。Mathmatics指出,每部手机的高度应该相同

这些是我的程序截图,显示图像的高度不同

第一张图片:

第二:


正如你所看到的,这些图像在高度上是不相等的。在我的模拟器和我的旧智能手机上,它们看起来不错。图像不应该触底,但在我的nexus 4上,它们确实触底。

对于任何感兴趣的人来说,为什么它不起作用。最后我发现了

现在

不仅可以加载图片,还可以根据你的分辨率进行缩放(不一定只取决于某个分辨率),这就是为什么我会感到困惑的原因。我以为它只是加载了这张该死的照片。现在如何解决这个问题:

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;

BitmapFactory.decodeResource(getResources(), R.drawable.picture,opts)

您从资源中的图像创建了一个缩放位图,使用了其他位图的尺寸?我编辑了该尺寸以使其更清晰。我用图片的尺寸表示位图宽度和位图高度。哪张图片?与资源中的相同?那为什么要提取两次呢?请显示完整代码。您的图像是1080x1080吗?不,它们完全不同,但它们是按1080p缩放的。图片上的是464*966。该程序现在的计算结果基本上是966/1080*768(768代表我的手机高度),现在图片的高度是686,但由于某些原因,在我的nexus上,它的高度要大得多,这就是为什么图像不合适的原因,但由于一些奇怪的原因,在模拟器和我的其他手机上,它工作得很好。966/1080*480用于模拟器,426正是我们在那里看到的。
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;

BitmapFactory.decodeResource(getResources(), R.drawable.picture,opts)