ios - son - optimizado o progresivo
¿Cómo visualizo un JPEG progresivo en UIImageView mientras se está descargando? (3)
Sé que esta publicación tiene aproximadamente 1 año, pero por si alguien lo está buscando, hay un proyecto llamado NYXImagesKit que hace lo que está buscando.
Tiene una clase llamada NYXProgressiveImageView
que es una subclase de UIImageView
.
Todo lo que tienes que hacer es:
NYXProgressiveImageView * imgv = [[NYXProgressiveImageView alloc] init];
imgv.frame = CGRectMake(0, 0, 320, 480);
[imgv loadImageAtURL:[NSURL URLWithString:@"http://yourimage"]];
[self.view addSubview:imgv];
[imgv release];
Además, una buena opción es guardar las imágenes interlaced
para que se carguen con baja calidad y mejoren con la descarga. Si la imagen no está entrelazada, se carga de arriba hacia abajo.
Descargar una imagen de la red y mostrarla en un UIImageView es bastante fácil. Sin embargo, esto requiere que la imagen se descargue completamente antes de que se muestre al usuario, derrotando por completo las imágenes progresivas JPEG (y PNG).
¿Cómo puedo renderizar las imágenes parcialmente descargadas mientras se realiza la transferencia? Me imagino que el SDK tiene alguna función de devolución de llamada que actualizaría la imagen, pero no puedo encontrar tal función. ¿Es posible en absoluto con el SDK de iOS actual?
¿Trataste de renderizar el UIImage parcialmente como se llamó a ReceiveData ...? Algo como …
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//TODO: add some error handling in case the image could not be created
UIImage *img=[UIImage imageWithData:data];
if (img) {
self.imageView.image=img;
}
}
Ahora hay una pequeña biblioteca de código abierto además de libjpeg-turbo que permite decodificar y mostrar fácilmente archivos JPEG progresivos:
let imageView = CCBufferedImageView(frame: ...)
if let url = NSURL(string: "http://example.com/yolo.jpg") {
imageView.load(url)
}