gpt4 book ai didi

iphone - 如何制作从 UIImagePickerController 返回的 UIImage 的精确副本?

转载 作者:行者123 更新时间:2023-12-03 18:37:11 25 4
gpt4 key购买 nike

我对 iPhone 相机返回的图像有不同的需求。我的应用程序会缩小图像以进行上传和显示,最近,我添加了将图像保存到“照片”应用程序的功能。

起初,我将返回值分配给两个单独的变量,但事实证明它们共享同一个对象,因此我得到了两个缩小的图像,而不是全尺寸的图像。

在发现您无法执行 UIImage *copyImage = [myImage copy]; 后,我使用 imageWithCGImage 制作了一个副本,如下所示。不幸的是,这不起作用,因为副本(此处为croppedImage)最终与原始图像旋转了90°。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Resize, crop, and correct orientation issues
self.originalImage = [info valueForKey:@"UIImagePickerControllerOriginalImage"];
UIImageWriteToSavedPhotosAlbum(originalImage, nil, nil, nil);
UIImage *smallImage = [UIImage imageWithCGImage:[originalImage CGImage]]; // UIImage doesn't conform to NSCopy

// This method is from a category on UIImage based on this discussion:
// http://discussions.apple.com/message.jspa?messageID=7276709
// It doesn't rotate smallImage, though: while imageWithCGImage returns
// a rotated CGImage, the UIImageOrientation remains at UIImageOrientationUp!
UIImage *fixedImage = [smallImage scaleAndRotateImageFromImagePickerWithLongestSide:480];
...
}

有没有办法复制 UIImagePickerControllerOriginalImage 图像而不在此过程中修改它?

最佳答案

这似乎可行,但您可能会遇到一些内存问题,具体取决于您对 newImage 所做的操作:

CGImageRef newCgIm = CGImageCreateCopy(oldImage.CGImage);
UIImage *newImage = [UIImage imageWithCGImage:newCgIm scale:oldImage.scale orientation:oldImage.imageOrientation];

关于iphone - 如何制作从 UIImagePickerController 返回的 UIImage 的精确副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3867980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com