0

ここに画像の説明を入力

私はUIImageViewを持っていて、UIImageViewの上に別のキャンバスビューがあります。キャンバス ビューのフレームに合わせて UIImageView の画像を切り取りたい。しかし、トリミング後に画像が引き伸ばされ、トリミング後にぼやけます。以下は私のコードです。

[UIImage *images = [self captureScreenInRect1:canvas.frame];
    self.imgViewCurrent.contentMode = UIViewContentModeScaleToFill;
     self.imgViewCurrent.image = images;

    - (UIImage *)captureScreenInRect1:(CGRect)captureFrame {
        CALayer *layer;
        layer = self.view.layer;enter image description here
        UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 1.0);
        CGContextClipToRect (UIGraphicsGetCurrentContext(),captureFrame);
        [layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        CGImageRef imageRef = CGImageCreateWithImageInRect([screenImage CGImage], captureFrame);

        UIImage *img = [UIImage imageWithCGImage:imageRef scale:0.0 orientation:UIImageOrientationUp];
        CGImageRelease(imageRef);
        return img;

    }
4

2 に答える 2

0

画像をトリミングした後、カスタム サイズで画像のサイズを変更できます。それはあなたを助けるかもしれません。

-(UIImage*) resizedImage:(UIImage *)inImage: (CGRect) thumbRect
{
CGImageRef          imageRef = [inImage CGImage];
CGImageAlphaInfo    alphaInfo = CGImageGetAlphaInfo(imageRef);

// There's a wierdness with kCGImageAlphaNone and CGBitmapContextCreate
// see Supported Pixel Formats in the Quartz 2D Programming Guide
// Creating a Bitmap Graphics Context section
// only RGB 8 bit images with alpha of kCGImageAlphaNoneSkipFirst, kCGImageAlphaNoneSkipLast, kCGImageAlphaPremultipliedFirst,
// and kCGImageAlphaPremultipliedLast, with a few other oddball image kinds are supported
// The images on input here are likely to be png or jpeg files
if (alphaInfo == kCGImageAlphaNone)
    alphaInfo = kCGImageAlphaNoneSkipLast;

// Build a bitmap context that's the size of the thumbRect
CGContextRef bitmap = CGBitmapContextCreate(
                                            NULL,
                                            thumbRect.size.width,       // width
                                            thumbRect.size.height,      // height
                                            CGImageGetBitsPerComponent(imageRef),   // really needs to always be 8
                                            4 * thumbRect.size.width,   // rowbytes
                                            CGImageGetColorSpace(imageRef),
                                            alphaInfo
                                            );

// Draw into the context, this scales the image
CGContextDrawImage(bitmap, thumbRect, imageRef);

// Get an image from the context and a UIImage
CGImageRef  ref = CGBitmapContextCreateImage(bitmap);
UIImage*    result = [UIImage imageWithCGImage:ref];

CGContextRelease(bitmap);   // ok if NULL
CGImageRelease(ref);

return result;
}
于 2013-02-01T11:27:39.500 に答える
0

この行を変更

self.imgViewCurrent.contentMode = UIViewContentModeScaleToFill;

この行に

 self.imgViewCurrent.contentMode = UIViewContentModeScaleAspectFit

UIViewContentModeScaleToFill基本的に画像を引き伸ばします。

于 2013-02-01T11:22:58.797 に答える