是否可以从相机拍摄照片以及日期、时间和位置(纬度 n 长)显示在 iphone 的照片中。
1 回答
是的,这是可能的,
您需要将UIImagePickerController与自定义叠加视图一起使用...
您可以自定义图像选择器控制器来自己管理用户交互。为此,请提供一个包含您要显示的控件的覆盖视图,并使用“捕获静止图像或电影”中描述的方法。除了或代替默认控件,您还可以显示自定义叠加视图。UIImagePickerController 类的自定义覆盖视图在 iOS 3.1 及更高版本中可通过 cameraOverlayView 属性获得。有关代码示例,请参阅 PhotoPicker 示例代码项目。
此外,您可以从UIImagePickerControllerMediaMetadata获取所需的所有数据、时间、地理坐标等
您可以使用它来填充自定义覆盖视图上的标签。
如果您不想使用此方法,您也可以使用 AVCamCaptureManager 和 AVCamRecorder 类轻松完成。
“Apple 在其开发者网站上构建了一个演示程序。它被命名为 AVCam。简单来说,它的作用是当您单击打开相机时,它会调用负责打开 iPhone 相机并录制视频的类和方法或捕获音频。它调用 UIImagePickerController 调用的相同类。因此您的相机将打开并开始接收输入。现在,如果您打开该 AVCam 项目的 xib 文件,您会发现一个小的 UIView 对象。这个视图是"
拍照后向 UIImage 添加字符串的代码:
//Add text to UIImage
-(UIImage *)addText:(UIImage *)img text:(NSString *)text1{
int w = img.size.width;
int h = img.size.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1);
char* text = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];// "05/05/09";
CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 255, 255, 255, 1);
//rotate text
CGContextSetTextMatrix(context, CGAffineTransformMakeRotation( -M_PI/4 ));
CGContextShowTextAtPoint(context, 4, 52, text, strlen(text));
CGImageRef imageMasked = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return [UIImage imageWithCGImage:imageMasked];
}