android volley 将自动调整(子样本)大图像的大小
android volley will resize(subsample) large images automatically
在我的应用程序中,我必须从我的服务器下载高分辨率图像。我打算使用截击。图片加载对于小 images.for 一些高分辨率图片效果很好,它会抛出内存不足异常。
我已经用一些示例图像进行了测试,它会抛出一些图像的内存不足异常。我还看到了关于对大图像进行子采样以在此 link loading large images efficiently 中有效显示的内容。我不知道它会自动降低高分辨率图像的图像分辨率。
使用 volley 将图像加载到图像视图中的代码。
imgloader_disk.get(url, new ImageListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
@Override
public void onResponse(ImageContainer response, boolean arg1) {
if (response.getBitmap() != null) {
mImageView.setImageBitmap(response.getBitmap());
}
}
});
你的服务器不能有大尺寸的图像,无论你使用什么库你无论如何都会有 Out of memory exception
因为任何 android 应用程序的默认堆大小是有限的,即 16MB .一旦你消耗了那个堆大小,无论你增加它还是不增加它,你肯定会遇到内存不足异常。所以不建议在服务器上使用高分辨率的图片。
添加
android:largeHeap="true"
在你的 AndroidManifest.xml
我假设您正在使用 ImageLoader
对象来启动请求以获取您需要的图像。
ImageLoader.get()
有一个重载方法,它接受 maxWidth / maxHeight 参数,你应该 always 使用(除非你知道你正在获取的图像是大小合理):
public ImageContainer get(String requestUrl, ImageListener imageListener, int maxWidth, int maxHeight, boolean withCache)
您可以使用 ImageView
显示图像的尺寸,或者 - 如果您不知道尺寸 - 您应该使用 width/height 屏幕。
传递这些变量后,Volley 将通过将图像缩小到不超过所需大小来处理其余的事情。
请记住,与 iOS 不同,Android 对您在应用程序中分配的内存有很大限制,这在位图上尤其普遍。您必须尽一切努力只分配您需要的资源,并在您不再需要时释放资源。
在我的应用程序中,我必须从我的服务器下载高分辨率图像。我打算使用截击。图片加载对于小 images.for 一些高分辨率图片效果很好,它会抛出内存不足异常。 我已经用一些示例图像进行了测试,它会抛出一些图像的内存不足异常。我还看到了关于对大图像进行子采样以在此 link loading large images efficiently 中有效显示的内容。我不知道它会自动降低高分辨率图像的图像分辨率。
使用 volley 将图像加载到图像视图中的代码。
imgloader_disk.get(url, new ImageListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
@Override
public void onResponse(ImageContainer response, boolean arg1) {
if (response.getBitmap() != null) {
mImageView.setImageBitmap(response.getBitmap());
}
}
});
你的服务器不能有大尺寸的图像,无论你使用什么库你无论如何都会有 Out of memory exception
因为任何 android 应用程序的默认堆大小是有限的,即 16MB .一旦你消耗了那个堆大小,无论你增加它还是不增加它,你肯定会遇到内存不足异常。所以不建议在服务器上使用高分辨率的图片。
添加
android:largeHeap="true"
在你的 AndroidManifest.xml
我假设您正在使用 ImageLoader
对象来启动请求以获取您需要的图像。
ImageLoader.get()
有一个重载方法,它接受 maxWidth / maxHeight 参数,你应该 always 使用(除非你知道你正在获取的图像是大小合理):
public ImageContainer get(String requestUrl, ImageListener imageListener, int maxWidth, int maxHeight, boolean withCache)
您可以使用 ImageView
显示图像的尺寸,或者 - 如果您不知道尺寸 - 您应该使用 width/height 屏幕。
传递这些变量后,Volley 将通过将图像缩小到不超过所需大小来处理其余的事情。
请记住,与 iOS 不同,Android 对您在应用程序中分配的内存有很大限制,这在位图上尤其普遍。您必须尽一切努力只分配您需要的资源,并在您不再需要时释放资源。