2009-02-01 5 views
5

tengo un programa que tiene un iPhone UIImage. Este UIImage debe transferirse a un objeto de imagen de JavaScript en un UIWebView. Estaba pensando que esto podría hacerse mediante una dirección URL de datos que envío a la UIWebView así:URL de Datos/PNG de UIImage

[wview stringByEvaluatingJavaScriptFromString:@"loadimage('%d')",dataurlfromuiimage]; 

lo tanto, necesito transferir mi UIImage en un Data: URL. Podría hacer esto yo mismo si pudiera obtener los datos PNG, pero tampoco puedo encontrar cómo hacerlo. Si hay una mejor manera de enviar esto a WebView, eso sería bueno también.

Respuesta

22

Para obtener una representación NSData de su imagen en el formato PNG, utilice

NSData *dataForPNGFile = UIImagePNGRepresentation(yourImage); 

mismo modo, una representación JPEG se puede obtener utilizando

NSData *dataForJPEGFile = UIImageJPEGRepresentation(yourImage, 0.9f); 

vez que tenga el NSData, se podría escribir a su directorio de documentos utilizando WriteToFile: atómicamente :, y luego creo que se puede pasar en una URL local (aunque yo' no he probado esto). Una alternativa es utilizar la categoría Base64 NSData a la que hace referencia François P. y enviarla de alguna manera a JavaScript como Base64.

+1

Es posible que no desee utilizar la base 64 + javascript método para imágenes grandes como es utiliza una gran cantidad de memoria - Safari mantendrá tanto la base 64 y decodificado versiones cargadas. Debería funcionar bien para imágenes pequeñas o si solo tiene algunas grandes – rpetrich

0

Por desgracia, tendrá que convertir su UIImage a la representación de un archivo de la imagen, no la información de píxeles decodificados que se almacena en la estructura UIImage. Es decir, deberá escribirlo de alguna manera en un archivo temporal y obtener los bytes NSData brutos para el archivo (probablemente JPEG o PNG). Luego use un codificador BASE64. No creo que ya está prevista por Apple, por lo que podría usted quiere mirar a este artículo: http://www.cocoadev.com/index.pl?BaseSixtyFour