objective-c – 如何在UIImageView中创建大图像?
我目前正在开发一个用于创建明信片的应用程序.但是,我想知道如何存储图片加框架(我有三个帧取决于分辨率)和UITextView(透明背景)中的一些文本.
我需要保持原始照片分辨率,即使帧或屏幕不允许超过320 x 480像素(2:3)并插入帧然后文本.只要我能在帧内保留图像,我就不在乎文本. 我需要的是关于如何处理这个问题的建议:我需要框架类,也许还需要提示我可以用来将图像作为位图或jpeg或png来处理的方法(函数,消息). 无法做到: >我的项目经理的想法:将它发送到转换器网页(我记不住http地址),上帝知道哪种格式,上帝知道如何指示网页合并所有视图,然后等待它回到手机并保存. POstcard创建必须在本地完成,以防Ipad用户想要创建它们然后将它们保存到PC或其他东西(个人而言,我想耗尽iPhone开发框架提供的所有资源). 是的,非常感谢您的回答 – 这是我的方法.我认为有一种更好的方法,比如处理图像和文本作为位图数据,原始数据或其他更好的方法来保存原始信息. 但是我仍然有一个小问题让我有点烦恼:必须从图像库或相机控制器中选择图像(框架内),但是,它会为您带来一个对象(图像大小适合屏幕)和一本惊人地带来原始图像的字典.现在,有两个对象.但明信片必须以4种不同的分辨率生成,并且图像的四个“版本”将产生巨大的内存开销. 我怎么能避免这个?我是否应该使用以下字典元素的引用来从内存中创建明信片,通过网络发送它然后销毁它们? NSString *const UIImagePickerControllerMediaURL; NSString *const UIImagePickerControllerReferenceURL; 在obj-c doc中是指向原始信息的对象…我只想在需要时通过alloc和dealloc减少开销. 解决方法
您需要将明信片绘制到新的内存中图像中.创建新图像的最简单方法是UIGraphicsBeginImageContext()函数.然后,您可以使用UIKit绘图方法将背景图像,文本等渲染到新图像中,并通过UIGraphicsGetImageFromCurrentImageContext()获取生成的图像.根据您的需要,您还可以使用UIImageJPEGRepresentation()从生成的图像中创建JPEG / PNG并将其写入磁盘.
这是一个例子: UIImage *backgroundImage = [UIImage imageNamed:@"MyPostcardBackground.jpg"]; CGRect frameRect = CGRectMake(0,backgroundImage.size.width,backgroundImage.size.height); UIGraphicsBeginImageContext(backgroundImage.size); [backgroundImage drawInRect:frameRect]; NSString *text = @"Caption here..."; [[UIColor whiteColor] set]; [text drawInRect:frameRect withFont:[UIFont boldSystemFontOfSize:35.0] lineBreakMode:UILineBreakModeWordWrap]; //... UIImage *postcardImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |