在不使用捏/UIScrollView 的情况下缩小照片

Posted

技术标签:

【中文标题】在不使用捏/UIScrollView 的情况下缩小照片【英文标题】:zoom out a photo without using pinch/UIScrollView 【发布时间】:2013-05-05 03:06:18 【问题描述】:

我正在对图像的某个部分进行处理,我正在使用以下代码,但在 imageToDoProce 上检索到的图像总是被放大,如果我可以缩小这张照片,我的应用程序将完成。 用户不会查看这张照片,因此我不想使用 Pinch/UIScrollView。 我只需要一种方法来缩小照片,或者有人指导我解决我的代码中的错误,让照片放大。 谢谢

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

    [connection setVideoOrientation:AVCaptureVideoOrientationPortrait];
    CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); 
    CVPixelBufferLockBaseAddress(imageBuffer,0); 
    uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer); 
    size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); 
    size_t width= CVPixelBufferGetWidth(imageBuffer);
    size_t height=CVPixelBufferGetHeight(imageBuffer);



    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef context = CGBitmapContextCreate(baseAddress, 640, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);

    CGRect rect = CGRectMake(0,200,320,48);

    CGImageRef newImage = CGBitmapContextCreateImage(context);
    UIImage *imageRef= [UIImage imageWithCGImage:CGImageCreateWithImageInRect(newImage, rect) scale:1 orientation:UIImageOrientationUp];

    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);

    CVPixelBufferUnlockBaseAddress(imageBuffer,0);



    UIImage *imageToDoProce = imageRef;

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 200, 320, 48)]; // frame is a CGRect.
    imageView.image = imageToDoProce;




   // UIImage* croppedImage = [CameraImageHelper croppedImageWithImage:imageView.image zoom:2];


   NSString*ret= [self DoProcess:imageView.image];
    //NSLog(@"obj=%@",[CameraImageHelper getSendResult]);
    NSLog(@"rec=%@",ret);

    dispatch_async(dispatch_get_main_queue(), ^
        [[CameraImageHelper getSendResult].res1 setText:ret];
        [[CameraImageHelper getSendResult].image123 setImage:imageToDoProce] ;
    );    

【问题讨论】:

您好,我开发了一些相机应用程序,它们在应用程序商店中。我可以在这方面帮助你。但我想知道所需图像的大小。 感谢发帖,这是您要求的尺寸 (0,200,320,48) 一件事,这个方法返回的图片的比例是 3:4 。因此,如果我们缩放图像,我们应该保持比例不变。试想你有一个大小为 (320,430) 的图像。那么你要裁剪的矩形是什么?你想要什么区域? 【参考方案1】:

在“CameraImageHelper”类中将内容模式设置为 image123

[image123 setContentMode:UIViewContentModeScaleAspectFit];

希望对你有帮助:)

【讨论】:

@Augustine PA 感谢发帖,但不幸的是这篇文章并没有解决我的问题 通过对我的图像进行一些修改,并使用你的代码,它已经解决了。非常感谢。

以上是关于在不使用捏/UIScrollView 的情况下缩小照片的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 UIImageView 的情况下捏缩放 UIImage?

不使用 UIScrollview 缩放 UIView

在图像上捏合时拉伸和缩小图像

在iOS Objective C的UIScrollView中设置时如何捏谷歌地图

如何在不破坏滚动功能的情况下将 UIImage 添加到 UIScrollView?

如何在不丢失触摸事件的情况下冻结 UIScrollView 滚动