首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过uri将图像设置为imageView时出现OOM。

通过uri将图像设置为imageView时出现OOM是由于图像文件过大,导致内存溢出(Out of Memory)引起的。在Android开发中,OOM是常见的问题之一。

解决该问题可以从以下几个方面入手:

  1. 图片压缩:对于大图,可以采用图片压缩的方式来减小图片的尺寸和文件大小。可以使用BitmapFactory类中的options来进行压缩处理,例如设置inSampleSize来减少图片的像素。
  2. 图片缓存:可以使用图片缓存库(如LruCache、DiskLruCache)来缓存图片,避免频繁加载和解码图片。缓存可以是内存缓存、磁盘缓存或双重缓存机制。
  3. 图片加载框架:使用第三方图片加载框架,如Glide、Picasso等,这些框架可以自动处理图片的加载和缓存,避免OOM问题。
  4. 图片分辨率控制:在加载图片时,可以根据ImageView的尺寸来设置合适的图片分辨率,避免加载过大的图片。可以通过计算ImageView的宽高和设备屏幕的分辨率来确定合适的图片加载尺寸。
  5. 内存优化:尽量避免在主线程中进行耗时的图片加载操作,可以使用异步加载或多线程来进行图片加载。另外,在加载完成后及时回收Bitmap对象,释放内存资源。

应用场景:该问题通常在使用URI加载图像时出现,比如从相册或网络获取图片URI,然后通过URI设置给ImageView来显示图片。这种情况下,如果图片过大或过多,就容易出现OOM问题。

推荐的腾讯云产品:腾讯云提供了一系列适用于云计算领域的产品和服务,其中包括存储服务、图片处理服务、人工智能服务等。相关产品如下:

  1. 腾讯云对象存储(COS):提供可扩展的云存储空间,可以将图片文件存储在COS上,通过URI加载图片时,可以使用COS的URL作为URI进行加载。
  2. 腾讯云图片处理(CIP):提供图像处理和处理管道功能,可以对图片进行压缩、裁剪、缩放等处理,可以在加载图片前进行预处理,减少OOM问题的发生。
  3. 腾讯云人工智能(AI):提供了丰富的人工智能服务,如图像识别、图像分析等,可以通过AI服务对图片进行分析和处理。

请注意,以上推荐的腾讯云产品仅作为参考,具体使用与否需要根据实际需求和情况进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android-Universal-Image-Loader 图片异步加载类库的使用

.showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri空或是错误的时候显示的图片 .showImageOnFail(R.drawable.ic_launcher...)//设置图片在下载前是否重置,复位 .displayer(new RoundedBitmapDisplayer(20))//是否设置圆角,弧度多少 .displayer(new FadeInBitmapDisplayer...EXACTLY :图像完全按比例缩小的目标大小               EXACTLY_STRETCHED:图片会缩放到目标大小完全               IN_SAMPLE_INT:图像将被二次采样的整数倍...  方法:   public void displayImage(String uriImageView imageView, DisplayImageOptions options) {}...4.如果经常出现OOM(别人那边看到的,觉得很有提的必要)    ①减少配置之中线程池的大小,(.threadPoolSize).推荐1-5;    ②使用.bitmapConfig(Bitmap.config.RGB

1.1K80

Android-Universal-Image-Loader图片异步加载并缓存

该库以及DEMO本地下载链接:下载地址 一、介绍  Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器异步图像加载,缓存和显示... .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri空或是错误的时候显示的图片 .showImageOnFail(R.drawable.ic_launcher...IN_SAMPLE_INT:图像将被二次采样的整数倍               IN_SAMPLE_POWER_OF_2:图片降低2倍,直到下一减少步骤,使图像更小的目标大小              ...  方法:   public void displayImage(String uriImageView imageView, DisplayImageOptions options) {}  ...4.如果经常出现OOM(别人那边看到的,觉得很有提的必要)    ①减少配置之中线程池的大小,(.threadPoolSize).推荐1-5;    ②使用.bitmapConfig(Bitmap.config.RGB

1.2K60
  • Android图片加载开源库深度推荐,安利Fresco1、Universal-Image-Loader2、Picasso3、Glide4、Fresco

    ,简单易上手,而且能够一定程度上的节省流量和防止OOM,但是后来···它还是OOM了-( ‵o′)凸(一定不是我自己懒得优化),而且加载的速度(不是说好的不谈跑分么)和显示效果确实比起其他的略微不足。...Glide也是支持“所有”的ImageView,使用过程中十分流畅,这里推荐两个库: GlidePalette 一个可以在Glide加载很方便使用Palette的库。...挺好的啊~这·····因为某次我要把通过图片URL拿本地缓存的时候,我居然找不到同步获取的方法(ノಠ益ಠ)ノ彡┻━┻,除了异步的回调之外,我居然找不到····而且听说Fresco对GIF和webp支持更好...DownsampleEnabled来让图片压缩,不然全图展示超大的图片还是会有OOM,如果用了这个,在底层Fresco就帮助你调整好了,回调给你的图片比例采样后一定不会OOM(虽然可以用七牛的图片处理)...R.drawable.XX资源,因为这种类似的内存释放不及时,多跳转几个页面很不幸你就会有OOM的可能,这中问题主要是在于设置背景,一般的loading和fail的图片都不会很大(要那么大干嘛,UI你是要打架吗

    1.5K20

    Android Universal Image Loader

    private final int imageResOnLoading; 正在加载显示的图片资源 id private final int imageResForEmptyUri; 图片uri...; 正在加载显示的图片资源 drawable private final Drawable imageForEmptyUri; 图片uri显示的图片 drawable private...Md5FileNameGenerator 以imguri的md5值name 4.4 ImageScaleType 图片的缩放类型ImageScaleType: EXACTLY:图像完全按比例缩小的目标大小...EXACTLY_STRETCHED:图片会缩放到目标大小 IN_SAMPLE_INT:图像将被二次采样的整数倍 IN_SAMPLE_POWER_OF_2:图片降低2倍,直到下一减少步骤,使图像小于目标大小...4.6 OOM 内存溢出是使用UIL比较容易出现的问题,如果出现这个问题的话,首先考虑禁用部分的Cache in Memory,如果还是不行,可以考虑下面几点(内容来源+Useful info): ①减少配置之中线程池的大小

    59920

    Android-图片的压缩(质量压缩和尺寸压缩)

    图片的质量压缩,会改变图片在磁盘中的大小(File文件的大小),不能改变图片在加载,在内存中的大小。...原理是:通过算法扣掉(同化)了 图片中的一些某个点附近相近的像素,达到降低质量 减少 文件大小的目的。 应用场景:图片的上传。 3.什么是尺寸压缩?...原理是:通过减少单位尺寸的像素值,真正意义上的降低像素值。 应用场景:用户头像的缩略图。...图片正常显示,磁盘中图片的大小并没有改变,只是改变了加载内存中的图片大小。...补充 质量压缩无法避免oom,但可以改变图片在磁盘中或者说是File文件的大小,尺寸压缩可以避免OOM,但不改变图片本身的大小,只改变加载是在内存中的大小,即bitmap.

    3.6K70

    Picasso,Glide,Fresco对比分析

    的一倍,所以OOM的风险也比fresco大一倍。...独有的SimpleDraweeView 圆角, 圆形 需要自己实现圆角,继承自BitmapTransformation操作bitmap对象实现 通过RoundingParams设置参数 缓存 Glide...缓存图像大小 Glide则会根据ImageView控件尺寸获得对应的大小的bitmap来展示,从而缓存也可以针对不同的对象:原始图像(source),结果图像(result) 缓存原始图像 加载策略 Glide...= null) { setImage(ImageSource.uri(Uri.fromFile(resource.getFile()))); } 优点 Glide 多种图片格式的缓存...在5.0以下系统,Fresco图片放到一个特别的内存区域(Ashmem区) 大大减少OOM(在更底层的Native层对OOM进行处理,图片将不再占用App的内存) 适用于需要高性能加载大量图片的场景

    4.7K20

    【Android从零单排系列九】《Android视图控件——ImageView

    二.ImageView常用主要属性介绍 android:src 设置图片资源 android:scaleType 设置图片缩放类型 android:alpha 设置图片透明度 src src 设置图片资源...:同上,缩放后放右下角 fitXY:对图像横纵方向进行独立缩放,使得该图片安全适应imageview,但图片宽高比可能发生改变 center:保持原图大小,显示在中心,当原图大小大于imageview大小...,超过部分裁剪处理 centerCrop:保持宽高比缩放,直到完全覆盖imageview,可能出现图片显示不完整 centerInside:保持宽高比缩放,知道imageview能完全显示图片 matrix...:不改变原图大小,从imageview左上角开始绘制原图,原图超过imageview的部分作裁剪处理 alpha 设置透明度 <ImageView android...在5.0以下系统,Fresco图片放到一个特别的内存区域(Ashmem区)。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM

    1.2K30

    常用控件之ImageView的使用(一)

    而我们也可以通过代码设置图像,运行后的结果和上述中一样: /** * @author: 下码看花 * date: 2019年8月16日 * description: ImageView的使用 *...我们图片的宽高属性设置固定值,并且给图片增加 background属性,我们可以直观的发现,第一张图片明显出现了拉伸,而第二张图片未出现变化,验证上述结论的正确性。...,并且设置 layout_width和 layout_height wrap_content; android:scaleType:设置所显示的图片如何缩放或移动以适应ImageView的大小。...fitXY:横向、纵向独立缩放,以适应该 ImageView; fitStart:保持纵横比缩放图片,并且图片放在 ImageView的左上角; fitCenter:保持纵横比缩放图片,缩放完成后图片放在...//通过setImageURI设置路径 ivPic.setImageURI(uri); } }); } /**

    1.7K20

    Android富文本开发

    如果图像数据较大就会造成bitmap对象申请的内存较多,如果图像过多就会造成内存不够用自然就会出现out of memory的现象。 为何容易OOM?...通过BitmapFactory的decode的这些方法会尝试已经构建的bitmap分配内存,这时就会很容易导致OOM出现。...如果设置true则表示decode函数不会生成bitmap对象,仅是图像相关的参数填充到option对象里,这样我们就可以在不生成bitmap而获取到图像的相关参数了。...第一次:设置true则表示decode函数不会生成bitmap对象,仅是图像相关的参数填充到option对象里,这样我们就可以在不生成bitmap而获取到图像的相关参数。...第二次:inJustDecodeBounds设置false再次调用decode函数就能生成bitmap了。而此时的bitmap已经压缩减小很多了,所以加载到内存中并不会导致OOM

    8.5K20

    *Android面试实战总结2

    图片在内存中就是 通过这个 弱引用缓存的。 ?...(uri, imageAware.getWrappedView());   if (options.shouldShowImageForEmptyUri()) {//  是否设置了默认的图片             ...问题 J哥回答: 对于大图片,直接加载给Imageview  容易出现 OOM 异常,那么我们就要对其进行压缩, 压缩原理,根据手机分辨率 去压缩 首先获取手机分辨率: [java] view...(uri, imageAware.getWrappedView());   if (options.shouldShowImageForEmptyUri()) {//  是否设置了默认的图片             ...问题 J哥回答: 对于大图片,直接加载给Imageview  容易出现 OOM 异常,那么我们就要对其进行压缩, 压缩原理,根据手机分辨率 去压缩 首先获取手机分辨率: [java] view

    40730

    android实现微信朋友圈发布动态功能

    上面红圈部分,当用户选中图片时,当=9张,那个加号图片就会消失! 本文主要仿照微信的发布动态功能,主要时针对微信发布动态,选中图片后的变化状态! 整体布局 ?...(这里之所以用glide是因为,用biatmap显示,即使压缩了,但是同时选中5张以上,就会oom,所以用glide加载压缩后的url) 代码 代码里注释已经写的很详细了!...uri = file.toURI(); String[] split = uri.toString().split(":"); list.add(split[1]);//压缩后返回的文件,带file字样...+ split[1]); } @Override public void onError(Throwable e) { //TODO 当压缩过去出现问题时调用 } }).launch();//启动压缩...,默认显示它,当它达到集合9,这个图片会自动隐藏。

    3.6K21

    拍照/选择相册,图片压缩旋转处理

    最近做项目需要用到拍照和选择相册照片,并显示出来imageview 上,然后压缩上传到服务器中,这本是一个非常常见的功能,但对于图片的处理确实一个技术活,稍微不注意会出现oom,图片压缩也要处理的刚刚好...uri获取图片路径 /** * 通过Uri获取文件路径 * 支持图片媒体,文件等 * * Author qiujuer@live.cn *...* 图片压缩处理(使用Options的方法) * * 说明 使用方法: * 首先你要将Options的inJustDecodeBounds属性设置...* * 说明 BitmapFactory创建bitmap会尝试已经构建的bitmap分配内存 * ,这时就会很容易导致OOM出现。...为此每一种创建方法都提供了一个可选的Options参数 * ,这个参数的inJustDecodeBounds属性设置true就可以让解析方法禁止bitmap分配内存 * ,返回值也不再是一个

    77920

    Android-Universal-Image-Loader源码分析

    ,用于加载内存缓存中的图片; LoadAndDisplayImagTask :处理加载和显示图像的任务,用于从Internet或文件系统加载图像 Bitmap; Config配置 初始化配置参数,参数...,默认最大数量Long.MAX_VALUE; final DiskCache diskCache; //通过URI从网络或文件系统或应用程序资源中检索图像,默认为HttpURLConnection...//提供了imageDownloader方法可以自定义,比如使用HttpClient或者OkHttp final ImageDownloader downloader; //图像解码...视图 讲视图主要是想让ImageView 与 ImageLoader 联系在一起来,ImageLoader 通过 ImageAware 接口实现图片在视图上的展现。..., ImageView imageView) { displayImage(uri, new ImageViewAware(imageView), null, null, null

    1.7K40

    Android ImageView分析并展开

    依据不同的ScaleType设置不同的矩阵mDrawMatrix。然后通过矩阵对图像进行变换,从而显示出不同的效果。...除了这一点经常使用到之外,还有就是怎样设置图片资源了,有下面几个方法:setImageResource(int resId)、setImageURI(Uri uri)、setImageDrawable(...或者也能够在xml文件里设置。 可是这样直接使用会有一个隐形的弊端,假设显示的图片过多或者单张显示的图片像素过大,就easy出现OOM问题。...,imageView.setImageResource, 或者 BitmapFactory.decodeResource 这种方法来设置一张大图片的时候,这些函数在完毕decode后,终于都是通过java...Android每一个程序分配的内存能够通过Runtime类的 totalMemory() 、freeMemory() 两个方法获取VM的一些内存信息。

    42330
    领券