Получение Изображения от URL/сервера [дубликат]

Я использовал его при построении объектов в сегменте общей памяти.

9
задан Mike Abdullah 11 April 2013 в 19:23
поделиться

5 ответов

Наиболее вероятная причина заключается в том, что вы на самом деле не загружаете изображение или получаете изображение, которое iPhone не может декодировать. Я бы начал с проверки MIME-типа результата ( [response MIMEType] ) и убедился, что это именно то, что вы ожидаете, а не на самом деле, например, строка. Затем убедитесь, что ваш тип является одним из типов, которые UIImage может обрабатывать: tiff, jpeg, gif, png, bmp, ico, cur, xbm.

1
ответ дан 4 December 2019 в 06:49
поделиться

Вполне возможно, что то, что возвращает ваш сервер, на самом деле не является данными изображения, и вы можете просто вставить URL-адрес в браузер и посмотреть, получите ли вы изображение. Кажется, что с кодом все в порядке, за исключением отсутствия проверки ошибок.

Когда вы передаете NSData без изображения в сообщение + imageWithData, вы получите nil. Вам, вероятно, следует проверить это.

1
ответ дан 4 December 2019 в 06:49
поделиться

Я написал класс RemoteImage для асинхронной загрузки изображений по сети. При необходимости он также заботится об освобождении памяти. См. Это сообщение: http://www.dimzzy.com/blog/2009/11/remote-image-for-iphone/

2
ответ дан 4 December 2019 в 06:49
поделиться

Вероятно, это не имеет прямого отношения к вашему вопросу, но я хотел указать, что ваша проверка ошибок здесь имеет потенциальную проблему. Подобные методы, у которых есть параметр ссылки на NSError , обычно не определяют, что они возвращают в случае успеха. Другими словами, вы должны сначала проверить возвращаемое значение метода, и только только обращаются к указателю ошибки, если метод не удался:

NSString *resultString = nil;
NSData *result = [NSURLConnection sendSynchronousRequest:request
                                       returningResponse:&response
                                                   error:&error];
[request release];

if( result ) {
  resultString = [[NSString alloc] initWithData:result
                                       encoding:NSUTF8StringEncoding];
}
else {
  [self handleError:error];
}
1
ответ дан 4 December 2019 в 06:49
поделиться

Если все, что вы пытаетесь сделать, это захватить изображение с веб-сервера через URL-адрес, есть более простой способ.

Это то, что я использую:

UIImage* myImage = [UIImage imageWithData: 
    [NSData dataWithContentsOfURL: 
    [NSURL URLWithString: @"http://example.com/image.jpg"]]];

И если вы хотите использовать его при просмотре изображений, просто сделайте следующее:

// Let's assume the picture is an instantiated UIImageView
[picture setImage: myImage];
[myImage release];

Я уверен, что есть причины, по которым человек может не захотеть использовать этот подход, но Я бы начал с этого и посмотрел, будет ли он делать то, что вам нужно.

29
ответ дан 4 December 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: