gpt4 book ai didi

ios - UIImageWriteToSavedPhotosAlbum()不保存裁剪的图像

转载 作者:行者123 更新时间:2023-12-01 17:32:24 26 4
gpt4 key购买 nike

我正在尝试将裁剪的图像保存到相机胶卷中。
(我需要以编程方式进行操作,我无法让用户对其进行编辑)

这是我(仍然很基本)的剪切并保存代码:

- (void)cutAndSaveImage:(UIImage*)rawImage
{
CIImage *workingImage = [[CIImage alloc] initWithImage:rawImage];

CGRect croppingRect = CGRectMake(0.0f, 0.0f, 3264.0f, 1224.0f);
CIImage *croppedImage = [workingImage imageByCroppingToRect:croppingRect];

UIImage *endImage = [UIImage imageWithCIImage:croppedImage scale: 1.0f orientation:UIImageOrientationRight];

self.testImage.image = endImage;

UIImageWriteToSavedPhotosAlbum(rawImage, self, @selector(image:didFinishSavingWithError:contextInfo:) , nil);
UIImageWriteToSavedPhotosAlbum(endImage, self, @selector(image:didFinishSavingWithError:contextInfo:) , nil);
}

该方法在以下位置调用: - (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
  • 我首先使用原始CIImage创建一个UIImage
  • 然后,我使用第一个实例方法获得了裁剪后的CIImage
  • 之后,我使用裁剪后的CIImage创建一个新的UIImage

  • 此时,为了获得一些反馈,我将新裁剪的 UIImage设置为 UIImageView的背景图像。这行得通,我可以清楚地看到图像完全按照我的要求裁剪了。

    但是,当我尝试将其保存到相机胶卷时,事情就停止了。
    我无法保存新创建的 endImage
    如您所见,我还添加了一行来保存原始 UIImage,仅供比较。原来的保存正常。

    另一个令人困惑的事情是,传递给 NSError回调的 image:didFinishSavingWithError:contextInfo:对象为nil。 (通常对两次保存尝试都执行该回调)

    编辑:
    刚刚做了一个实验:
    NSLog(@"rawImage: %@    -   rawImage.CGImage: %@", rawImage, rawImage.CGImage);
    NSLog(@"endImage: %@ - endImage.CGImage: %@", endImage, endImage.CGImage);

    看起来只有 rawImage(来自 UIImagePickerController)才拥有后备 CGImageRef。另一个不是通过 CIImage创建的。

    可以使用支持的 UIImageWriteToSavedPhotosAlbum来使 CGImageRef起作用吗?

    最佳答案

    UIImageWriteToSavedPhotosAlbum是否可以使用CGImageRef作为后盾?

    正确。 CIImage也不是图像,仅由CIImage支持的UIImage也不是图像。它只是一种包装。为什么在这里全部使用CIImage?您没有使用CIFilter,所以这没有任何意义。或者,如果您使用的是CIFilter,则必须通过CIContext进行渲染才能将输出作为位图获取。

    您可以通过绘制到较小的图形上下文来轻松进行裁剪。

    关于ios - UIImageWriteToSavedPhotosAlbum()不保存裁剪的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16400805/

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