ios - imageWithCGImage 的内存问题
<p><p>所以这里的要点是我有一个程序,它有一个由许多小图像组成的大图像,它获取这个图像并将它分成许多较小的图像(如电影的帧),然后用户可以去擦洗通过。</p>
<p>我目前使用这种方法</p>
<pre><code>- (NSMutableArray *)createArrayFromImage: (NSData *)largerImageData
{
UIImage *largerImage = ;
int arraySize = (int)largerImage.size.height/largerImage.size.width; //Find out how many images there are
NSMutableArray *imageArray = [ init];
for (int i = 0; i < arraySize; i++) {
CGRect cropRect = CGRectMake(0, largerImage.size.width * i, largerImage.size.width, largerImage.size.width);
CGImageRef imageRef = CGImageCreateWithImageInRect(, cropRect);
UIImage *image = ;
CGImageRelease(imageRef);
;
NSLog(@"Added image %d", i);
}
NSLog(@"Final size %d", (int));
return imageArray;
}
</code></pre>
<p>但是,由于 <code>UIImageJPEGRepresentation</code> 被调用,这非常慢,如果我只是将 <code>UIImage</code> 直接添加到数组中,但是当我在用户擦洗时执行此操作时会快得多通过数组中的图像,它开始分配大量内存,迫使应用程序最终崩溃。如果有帮助,它会调用 <code>;</code>。对此的任何帮助将不胜感激。</p>
<p>ED|T:CGImageCreateWithImageInRect 可能会保留“largerImage”,这会导致它占用大量内存</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>基本上,您的目标似乎是随机向用户显示图像的特定部分。 </p>
<p>如果您只想显示图像的较小部分,则不必创建较小的图像。特别是如果大图像可以立即加载到内存中。
而是尝试使用 View 剪辑来调整图像的可见部分。</p>
<p>例如,你可以试试这个。</p>
<ol>
<li>将大图设置为 <code>UIImageView</code> 和 <code>sizeToFit</code>。</li>
<li>将 ImageView 放在 <code>UIView</code> 中。</li>
<li>将<code>UIView</code>的frame设置为小图片。</li>
<li><code>clipsToBounds</code> 将外部 <code>UIView</code> 改为 <code>YES</code>。</li>
<li>调整内部<code>UIImageView</code>的<code>transform</code>控制可见部分。</li>
</ol>
<p>这与您对 <code>UIScrollView</code> 所做的操作基本相同,只是通过用户交互自动滚动。</p>
<p>这是一个代码示例。</p>
<pre><code>- (void)viewDidLoad {
;
UIImageView* v1= [ init];
];
;
UIView* v2= [ init];
;
;
;
// Set transform later to adjust visible portion.
v1.transform = CGAffineTransformMakeTranslation(-100, -100);
;
}
</code></pre></p>
<p style="font-size: 20px;">关于ios - imageWithCGImage 的内存问题,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/24727599/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/24727599/
</a>
</p>
页:
[1]