Масштабирование 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
,