Sto utilizzando la libreria di foto iPad (rullino fotografico) per importare alcune immagini e inserirle in un UIImageView creato utilizzando il metodo di allocazione. ma quando vengono mostrate le immagini c'è una grande perdita di qualità dell'immagine. Ad esempio, nella libreria c'è un'immagine con un fiume che è molto nitida, pixel per pixel, ma quando la impongo perde almeno la metà dei pixel. Questo è il codice per l'importazione dell'immagine:perdita di qualità dell'immagine notevole durante l'importazione dalla libreria iOS
- (IBAction) useCameraRoll: (id)sender
{
@autoreleasepool {
if ([self.popoverController isPopoverVisible]) {
[self.popoverController dismissPopoverAnimated:YES];
} else{
}{
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
@autoreleasepool {
UIImagePickerController *imagePicker =
[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType =
UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = [NSArray arrayWithObjects:
(NSString *) kUTTypeImage,
nil];
imagePicker.allowsEditing = YES;
self.popoverController = [[UIPopoverController alloc]
initWithContentViewController:imagePicker];
}
popoverController.delegate = self;
[self.popoverController
presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
newMedia = NO;
}}
}
}
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self.popoverController dismissPopoverAnimated:true];
@autoreleasepool {
NSString *mediaType = [info
objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = [info
objectForKey:UIImagePickerControllerEditedImage];
image1.image = image;
if (newMedia)
UIImageWriteToSavedPhotosAlbum(image,
self,
@selector(image:finishedSavingWithError:contextInfo:),
nil);
}
else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
// Code here to support video if enabled
}}
}
-(void)image:(UIImage *)image
finishedSavingWithError:(NSError *)error
contextInfo:(void *)contextInfo
{
if (error) {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Save failed"
message: @"Failed to save image"\
delegate: nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
}
E la differenza di qualità (immagine ingrandita), ma si può vedere chiaramente la differenza anche in scala ridotta:
iOS libreria:
mio UIImageView:
voi significa invece di UIImage * image = [info objectForKey: UIImagePickerControllerEditedImage]; ?? – Alessandro
Sì, funziona benissimo. anche il mio era ok in questo modo: UIImage * image = [info objectForKey: UIImagePickerControllerOriginalImage]; – Alessandro
... ma non c'è alcuna opzione di modifica, e vorrei mantenere la versione modificata !! – Alessandro