Ändern der Größe von UI-Bildern, die von der Kamera abgerufen wurden, DREHT auch das UI-Bild?
Ich erhalte UI-Bilder von der Kamera und ordne sie UIImageViews zu, die angezeigt werden sollen. Dabei gibt mir die Kamera ein 1200 x 1600 Pixel großes Bild, das ich dann in meiner Anwendung einer UIImageView zuweisen kann. Unter dieser Bedingung wird das Bild wie erwartet in der Bildansicht angezeigt. Wenn ich jedoch versuche, die Größe des abgerufenen UIImage zu ändern, bevor ich es dem UIImageView zuordnete, wird die Größe des Bildes wie erwartet geändert. Es gibt jedoch ein Problem darin, dass mein UIImage irgendwo (im RESIZING-Code?) DREHBAR wird. Wenn ich das verkleinerte UIImage einem UIImageView zuweisen, wird das Bild um 90 Grad gedreht und gestreckt angezeigt, da das Seitenverhältnis (1200 x 1600 Pixel) unverändert blieb.
Ich benutze dies, um ein UIImage von der Kamera zu bekommen:
- (void) imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
{
myImg = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
myResizedImg = [self resizeImage:myImg width:400 height:533];
[myImageView setImage:myResizedImg];
}
Ich benutze dies, um die Größe zu ändern:
-(UIImage *)resizeImage:(UIImage *)anImage width:(int)width height:(int)height
{
CGImageRef imageRef = [anImage CGImage];
CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
if (alphaInfo == kCGImageAlphaNone)
alphaInfo = kCGImageAlphaNoneSkipLast;
CGContextRef bitmap = CGBitmapContextCreate(NULL, width, height, CGImageGetBitsPerComponent(imageRef), 4 * width, CGImageGetColorSpace(imageRef), alphaInfo);
CGContextDrawImage(bitmap, CGRectMake(0, 0, width, height), imageRef);
CGImageRef ref = CGBitmapContextCreateImage(bitmap);
UIImage *result = [UIImage imageWithCGImage:ref];
CGContextRelease(bitmap);
CGImageRelease(ref);
return result;
}
FRAGE: Wie ändere ich die Größe eines von der Kamera gezogenen Bilds, ohne die Pixel zu drehen?