Масштабирование UIImage для использования с CGContextDrawImage

У меня есть изображение размером 480px x 480px, и я хотел бы отобразить его в виде 375px x 375px, используя CGContextDrawImage, как показано ниже. На данный момент изображение не масштабируется, чтобы соответствовать виду - оно рисуется в полном размере. Как я могу настроить код ниже, чтобы масштабировать изображение, чтобы соответствовать представлению, пожалуйста?

    self.image = [UIImage imageNamed:@"image2.png"];
    CGContextRef layerContext = CGLayerGetContext(drawingLayer);
    CGContextSaveGState(layerContext);
    UIGraphicsBeginImageContext (self.viewRect.size);
    CGContextTranslateCTM(layerContext, 0, self.image.size.width);
    CGContextScaleCTM(layerContext, 1.0, -1.0);
    CGContextDrawImage(layerContext, self.viewRect, self.image.CGImage);
    UIGraphicsEndImageContext();
    CGContextRestoreGState(layerContext);

1 ответ

Решение

CGContextDrawImage Функция масштабирует изображение рисунка, чтобы соответствовать виду. В документации по этой функции сказано:

Рисует изображение в графическом контексте.

Кварц масштабирует изображение - непропорционально, если необходимо - чтобы соответствовать границам, указанным параметром rect.

Единственное, что выглядит весьма подозрительно, это строка, которая говорит:

CGContextTranslateCTM(layerContext, 0, self.image.size.width);

Во-первых, вы хотите перевести вертикально по высоте, а не по ширине. Во-вторых, вы хотите перевести на высоту viewRectне из image, Таким образом:

CGContextTranslateCTM(layerContext, 0, self.viewRect.size.height);

Если изображение по-прежнему не масштабируется правильно, я бы посоветовал вам дважды проверить viewRect, Но CGContextDrawImage определенно рисует изображение, масштабированное в пределах указанного CGRect,

Другие вопросы по тегам