Как кешировать UIImage, конвертированный из CIImage - PullRequest
0 голосов
/ 15 мая 2018

В приложении для 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;
}
...