Какой самый быстрый способ загрузить большое изображение на iPhone? - PullRequest
0 голосов
/ 02 июня 2011

HI там,

Я создаю скролл-просмотр, который пролистывает 100 изображений домов.Оно работает.Но .... Для каждого просматриваемого изображения выделенная память увеличивается на 2,5 МБ.В конце концов приложение упало из-за недостатка памяти.

Я использую код для распаковки изображения ..... - (void) depress {const CGImageRef cgImage = [self CGImage];

const int width = CGImageGetWidth(cgImage);
const int height = CGImageGetHeight(cgImage);

const CGColorSpaceRef colorspace = CGImageGetColorSpace(cgImage);
const CGContextRef context = CGBitmapContextCreate(
                                                   NULL, /* Where to store the data. NULL = don’t care */
                                                   width, height, /* width & height */
                                                   8, width * 4, /* bits per component, bytes per row */
                                                   colorspace, kCGImageAlphaNoneSkipFirst);

CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);
CGContextRelease(context);

}

но это не работает, самое время загрузить изображение.

Ответы [ 3 ]

0 голосов
/ 02 июня 2011

Вам нужно сделать некоторую оптимизацию памяти.Вот логика для сохранения памяти, но вы должны реализовать ее самостоятельно.Не добавляйте все изображения в scrollview, просто добавьте изначально 5 изображений.Предположим, что пользователь просматривает изображение 1, и теперь он достигает изображения 3, когда пользователь достигает изображения 3, удалите изображение 1 из scrollView, чтобы освободить память.И по мере того, как пользователь прокручивает вперед, добавляйте следующие изображения, например, когда пользователь на image4, добавляйте image6 и делайте наоборот.Когда пользователь переходит с image4 на image3, удалите image6 из памяти.Таким образом, в памяти останется только 5 изображений.

0 голосов
/ 24 мая 2013

Три способа:

  1: Trying Apple's sample code called "StreetScroller", then you'll get to know how to make scrollview work definitely.

  2:Create thumbnails for large images and save to your own directory. Then read them from  url.

 3: Use UIpageviewcontroller
0 голосов
/ 02 июня 2011

Я также столкнулся с той же проблемой. Решение, которое я выбрал, состояло в том, что я изменил размер изображения до размера 320 * 460, а затем размер изображения стал примерно 50 КБ, не более того. Вы также можете сделать то же самое.

Код для изменения размера изображения: -

предположим, что у вас есть изображение в переменной изображения UIImage, и новое изображение сохраняется в editedImage, который также является объектом UIImage.

if (self.image.size.height>460 || self.image.size.width>320) {
        UIGraphicsBeginImageContext(CGSizeMake(320,480));
        [self.image drawInRect: CGRectMake(0, 0,320,480)];
         self.editedImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext(); 

        NSLog(@"smallImage%f",self.editedImage.size.height);
        NSLog(@"smallImage%f",self.editedImage.size.width);
    }
    else {
        self.editedImage=self.image;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...