Actualmente estoy dando mis primeros pasos con el desarrollo de iPhone a través de MonoTouch, estoy jugando con un UIImage
que leo en la biblioteca de fotos.
Lo que quiero lograr es get la matriz de bytes en bruto ( byte[]
) de la image.
Sé que hay envolturas UIImageJPEGRepresentation
y UIImagePNGRepresentation
en MonoTouch. También sé cómo usarlos. Lo que no sé es:
¿Cómo decido cuál de estas dos funciones debo llamar?
Es decir, si la image original es una image JPEG, no quiero getla como un PNG sino también como JPEG, y viceversa.
¿Hay alguna manera de hacer esto, o me estoy perdiendo algunos puntos en esto?
Una vez que tenga un UIImage
, es capaz de producir un JPEG o PNG usando UIImageJPEGRepresentation
o UIImagePNGRepresentation
. El formatting de la image original solo es importante cuando se crea el UIImage a partir de él (decide qué proveedor de CFImage
cargarlo).
Si es importante para su aplicación o algorithm para asegurarse de savelo como el formatting original, creo que debe mantener esa información para usar cuando la escriba. Comprobé dos veces y no pude encontrar nada que anunciase de qué formatting vino.
¿Vas a cambiar la image a través de UIImageView
o la image no se modifica en tu experiencia? Si no ha cambiado y solo necesita la interfaz de usuario para seleccionar la image, ¿podría get bytes de file? Por ejemplo, si mostró las imágenes para seleccionarlas y luego las sube a un server o algo así, el UIImage
solo podría ser para ver y seleccionar y si su estructura de datos restring de qué file provino, podría recuperar los bits disco y carga. Si cambia el file en la vista, entonces usted o el usuario deben decidir la salida (y, si es jpeg, la calidad) de la image.
PREPARAR
typedef NS_ENUM(NSInteger, DownloadImageType) { DownloadImageTypePng, DownloadImageTypeJpg }; @property (assign, nonatomic) DownloadImageType imageType;
DETECTAR
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSString *compareString = [[info objectForKey:UIImagePickerControllerReferenceURL] absoluteString]; NSRange pngRange = [compareString rangeOfString:@"PNG" options:NSBackwardsSearch]; if (pngRange.location != NSNotFound) { compareString = [compareString substringFromIndex:pngRange.location]; self.imageType = DownloadImageTypePng; NSLog(@"%@", compareString); } else { NSLog(@"Not PNG"); } NSRange jpgRange = [compareString rangeOfString:@"JPG" options:NSBackwardsSearch]; if (jpgRange.location != NSNotFound) { compareString = [compareString substringFromIndex:jpgRange.location]; self.imageType = DownloadImageTypeJpg; NSLog(@"%@", compareString); } else { NSLog(@"Not JPG"); } }
UTILIZAR
if (self.imageType == DownloadImageTypePng) { } else if (self.imageType == DownloadImageTypeJpg) { }