-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
使用ResizingImageProcessor Crash #2268
Comments
你这是内存爆了, 如果是大图片的话不建议使用,业界的标准做法一般都是 区域解码 或者这里可以使用
的方式降采样一下 , pointSize 为你将来要降采样到的大小, 这里注意 一定不能先把URL读取出来为data在处理, 可以尝试一下 方式一, 如果还有问题建议采用区域解码 |
我的诉求也挺简单,setImage(with: URL(string: urlString), placeholder: placeholder) 大部分场景下是够用的。 但是有一些异常网络图片(宽高非常大,比如: 16000*17000),导致内存爆掉。 所以我就想做一下兼容处理,如果原始图片尺寸太大的话,就resize一下。 有两个要求: 1. 不能改变图片的原始比例(未下载时尺寸是未知的)。2. 要兼顾在列表中,不要因为异步的问题导致图片错乱。 |
建议还是从业务上区分一下, 最起码过滤绝大多数的场景,在集中处理小case事件,针对于超大图,目前比较常见只能是降采样或者区域解码了,不然内存消耗太大的时候容易FOOM |
很难从业务中区分,异常的大图可能出现在任意地方(数据质量不好)。但是给setImage设置Options又会引起内存的问题。 |
我有个疑问,KF 内部 做下采样的时候 是 |
目前我们自己的工程里面都是使用 let imageSource = CGImageSourceCreateWithURL(URL, nil) 的方式来进行降采样,因为这个不用读取全部的data,比较节省空间和时间, 但是kf中处理图片在决定是是那个provider 的时候 已经通过 file来读取data,然后再传入作为后续图片的操作,改为CGImageSourceCreateWithURL 你需要看 好不好处理 |
在列表中加载图片,崩溃在此。
The text was updated successfully, but these errors were encountered: