Захват CGRect не дает правильное изображение.Что делать? - PullRequest
1 голос
/ 05 марта 2012

Я получаю CGRect с помощью следующего кода. Но полученное изображение не то, что я хочу. Изображение имеет прозрачный фон. Что нужно сделать для удаления прозрачного фона при предложении картинки enter image description here.

   - (UIImage *)captureScreenInRect:(CGRect)captureFrame {

        CALayer *layer;
        layer = imageScrollview.layer;
        UIGraphicsBeginImageContext(imageScrollview.bounds.size); 
        CGContextClipToRect (UIGraphicsGetCurrentContext(),captureFrame);
        \[layer renderInContext:UIGraphicsGetCurrentContext()\];
        UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return screenImage;

    }

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

Попробуйте это

CGRect  cropRect = CGRectMake(imageScrollview.frame.origin.x+15, imageScrollview.frame.origin.y+15, WIDTH, HEIGHT);
0 голосов
/ 05 марта 2012

Переведите ваш контекст так, чтобы его происхождение совпадало с вашим captureFrame:

UIGraphicsBeginImageContext(imageScrollview.bounds.size);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(c, -captureFrame.origin.x, -captureFrame.origin.y);
[imageScrollView.layer renderInContext:c];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

(записано по памяти, не проверено)

Кроме того, отсечение контекста не требуется, поскольку изображение уже обрезано границами контекста изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...