В приложении для iOS я хочу отображать CIImage
изображения (поступающие из CIFilter's) в UICollectionView
, но производительность очень низкая, потому что CIImage
обновляется каждый раз, когда появляется новая ячейка.
Итак, я хотелкэшировать все отфильтрованные изображения, установив их в UIImage
и сохранив это UIImage
.Однако кажется, что UIImage
будет вычислять только отфильтрованное изображение после его показа.
Я пытался использовать CGImage
, NSData
... но ничего не помогло.
Каков наилучший способ принудительного вычисления CIImages
икэшировать вывод изображения?
// Generation of cached images:
for (int i=0;i<10;i++)
{
CIFilter *filteredimage=<output of function>
CIImage *img=filteredimage.outputImage;
UIImage *uImg=[UIImage imageWithCIImage:img];
[filterPreviews addObject:uImg];
}
// Reuse of cached images in the cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
colorFilterCollectionViewCell *cell = (colorFilterCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
cell.filterPreview.image=[filterPreviews objectAtIndex:indexPath.row];
return cell;
}