创建特定大小的 UIImage

Posted

技术标签:

【中文标题】创建特定大小的 UIImage【英文标题】:Create UIImage of a specific size 【发布时间】:2012-01-16 08:33:28 【问题描述】:

如何从头开始创建 UIImage。具体来说,我想创建一个大小为 320x50 的 UIImage。然后,我希望能够在该图像上绘制特定颜色的多边形。

【问题讨论】:

您可以使用 Quartz Graphics 轻松绘制图像。如果我理解正确,您只想在图像上绘制一些东西?好吧,在 Quartz Graphics 中,您可以在 Quartz Graphics 完成绘制图像之后在绘制的图像上绘制东西。你可能应该想查一下;) 【参考方案1】:

这是给你的答案stitch picture in iphone

根据我的经验,我可以给你一些注意事项:

比例尺

- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize UIGraphicsBeginImageContext(CGSizeMake(image.size.width*scaleSize,image.size.height*scaleSize); [图像drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height *scaleSize)]; UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 返回缩放图像;

调整大小

- (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height)); [图像 drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)]; UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 返回调整大小图像;

处理特定视图

你必须先导入 QuzrtzCore.framework

-(UIImage*)captureView:(UIView *)theView CGRect rect = theView.frame; UIGraphicsBeginImageContext(rect.size); CGContextRef 上下文 = UIGraphicsGetCurrentContext(); [theView.layer renderInContext:context]; UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 返回图片;

处理范围表单图像

CGRect captureRect = yourRect CGRect viewRect = self.view.frame; UIImage *viewImg; UIImage *captureImg; UIGraphicsBeginImageContext(viewRect.size); CGContextRef 上下文 = UIGraphicsGetCurrentContext(); [self.view.layer renderInContext:context]; viewImg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); captureImg = [UIImage imageWithCGImage:CGImageCreateWithImageInRect(viewImg.CGImage, captureRect)];

保存图片

保存在应用中

NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"image.png"]; [UIImagePNGRepresentation(image) writeToFile:path atomically:YES];

保存在相册中

CGImageRef screen = UIGetScreenImage(); UIImage* 图像 = [UIImage imageWithCGImage:screen]; CGImageRelease(屏幕); UIImageWriteToSavedPhotosAlbum(图像,自我,无,无);

【讨论】:

感谢您的广泛回复,但是我不确定其中一些是什么意思,例如“处理范围形式的图像”......我会用哪一个来简单地做类似的事情UIImage *newImage = [oldImage drawPolygonOnOldImage:polygon];【参考方案2】:

我在这里留下我的答案,以防万一这对未来有帮助。这个答案在ios10+上有效

extension UIImage 
    static func image(with size: CGSize) -> UIImage 
        UIGraphicsImageRenderer(size: size)
            .image  $0.fill(CGRect(origin: .zero, size: size)) 
    

所以你可以这样做: UIImage.image(with: CGSize(width: 320, height: 50))

我的回答受此启发:https://***.com/a/48441178/2000162

【讨论】:

【参考方案3】:

你可以:

    使用您需要的颜色/像素/尺寸/等创建CGBitmapContext。 使用上下文或直接操作像素。 使用CGBitmapContextCreateImage 的结果创建UIImage

【讨论】:

以上是关于创建特定大小的 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

创建特定窗口后如何调整其大小?

如何创建特定大小的 SQL Server 地理多边形?

使用可变来创建特定大小的numpy的阵列

多个UIImage合并成一个UIImage

如何创建具有特定大小的 C 结构以通过套接字发送到 DalmatinerDB?

在scala中使用二维数组创建特定模式