2010-10-11 4 views
1

J'essaye de copier une image d'image (en fin de compte j'ai l'intention de flouter la copie). À l'heure actuelle, l'image copiée s'affiche correctement dans le simulateur, mais elle pivote de 90 degrés lors de l'exécution sur l'appareil.La copie UIImage finit par être tournée

J'utilise les éléments suivants pour créer ACOPY:

CGImageRef cgImage = [sourceImage CGImage]; 

// Faire une nouvelle image de la CG Référence UIImage * copyOfImage = [[UIImage alloc] initWithCGImage: CGImage];

L'image source provient d'un UIImagePickerController. Les mêmes résultats se produisent que je prenne la soruce de la bibliothèque ou de la caméra.

Merci à l'avance pour toute aide

Répondre

0

Selon la documentation pour UIImage, propriété imageOrientation contiennent l'orientation d'une image et la valeur par défaut UIImageOrientationUp. Mais si l'image a des données EXIF ​​pour l'orientation, elle retournera à la place. CImImage et initWithCGImage: (CGImageRef) CGImage (dans UIImage) utilisera par défaut l'orientation UIImageOrientationUp, ce qui peut être incorrect si l'image/le film a été réellement pris en charge, par exemple, par UIImageOrientationUp (0). mode paysage. Mais si vous utilisez les versions de ci-dessus qui prennent également l'orientation et passez dans sourceImage.imageOrientation cela devrait fonctionner.

0

Ayant récemment fait cela, en particulier pour une utilisation avec flou, je ne suggérerais pas d'utiliser une image complète. J'ai trouvé le processus beaucoup trop lent, et comme l'image originale est floue, il vaut mieux faire une petite image, puis l'agrandir et la rendre floue à partir de là.

Je n'ai pas testé cela car c'est un peu différent de mon projet d'origine.

Ce code utilise UIImage + Redimensionner pour le redimensionnement.

//Creates an autoreleased representing the current screen view 
-(UIImage *)currentBlurredImage:(UIImage *)anImage{ 

CGImageRef imageRef = CGImageCreateWithImageInRect([anImage CGImage], bounds); 
UIImage *coppiedImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:anImage.imageOrientation]; 

coppiedImage = [viewImage resizedImage:CGSizeMake(120, 80) interpolationQuality:kCGInterpolationLow]; 
coppiedImage = [viewImage blurredCopyUsingGuassFactor:4 andPixelRadius:4]; 
return coppiedImage ; 

}

Flou a été fait avec le code d'ici http://iphonedevelopment.blogspot.com/2010/08/uiimage-blur.html (crédit où son dû!). Cependant, je l'ai nettoyé et traité avec un tas de mémoire, et d'autres problèmes.

http://pastebin.com/MaHvvdim

Questions connexes