有没有办法在Swift中获取设备型号名称(iPhone 4S,iPhone 5,iPhone 5S等)?
我知道有一个名为的属性,UIDevice.currentDevice().model但它只返回设备类型(iPod touch,iPhone,iPad,iPhone模拟器等).
我也知道可以使用这种方法在Objective-C中轻松完成:
#import <sys/utsname.h>
struct utsname systemInfo;
uname(&systemInfo);
NSString* deviceModel = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
但是我正在Swift中开发我的iPhone应用程序,所以有人可以用同样的方式帮助我在Swift中解决这个问题吗?
我正在使用Xcode 6.0.1和Swift.我有一个UIImage,我想用旧图像作为源来制作另一个图像,新图像以某种方式旋转......比如垂直翻转.
几个月前这个问题已得到解答.但是,即使情况相同,该解决方案也不适用于我.
当我有
var image = UIImage(CGImage: otherImage.CGImage, scale: 1.0, orientation: .DownMirrored)
Run Code Online (Sandbox Code Playgroud)
Xcode抱怨在调用中有一个"额外参数'缩放'".在使用Apple文档检查之后,这没有任何意义,因为该版本的初始化程序确实采用了这三个参数.省略比例和方向参数确实解决了问题,但阻止我进行轮换.
我能找到的唯一另一个参考是这个人,他有同样的问题.
你怎么看?
我确实需要这个在这个版本的Xcode上运行,所以如果有另一种方法来执行旋转(我还没有找到一个)那将是有用的.
使用iPhone 4的前置摄像头拍摄照片时,拍摄的照片与iPhone屏幕上显示的照片相比较.我怎样才能恢复UIImage(不是UIImageView)的"屏幕"视图,并能够像这样保存它?
我试过了 :
UIImage* transformedImage = [UIImage imageWithCGImage:pickedImage.CGImage scale:1.0 orientation:UIImageOrientationLeftMirrored];
UIImageWriteToSavedPhotosAlbum (transformedImage, self, @selector(photoSaved:didFinishSavingWithError:contextInfo:), nil);
Run Code Online (Sandbox Code Playgroud)
然后把它放在屏幕上.它与屏幕上显示的几乎相同,但保存的图像失真.
那么......我怎样才能恢复UIImage(不是UIImageView)的"屏幕"视图,并能够像这样保存它?
我也尝试过这种方式:
UIImage* pickedImage = [[info objectForKey:UIImagePickerControllerOriginalImage] retain];
UIImage* transformedImage;
CGSize imageSize = pickedImage.size;
UIGraphicsBeginImageContextWithOptions(imageSize, YES, 1.0);
GContextRef ctx = UIGraphicsGetCurrentContext();
CGContextRotateCTM(ctx, 3.14); // rotate by 180°
CGContextScaleCTM(ctx, 1.0, -1.0); // flip vertical
CGContextDrawImage(ctx, CGRectMake(0.0, 0.0, imageSize.width, imageSize.height), pickedImage.CGImage);
transformedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
但这只是一个黑色的图像.
我想拍摄A4纸的照片.重要的是,我希望文本可读,但我不希望像2592x1936像素或3264x2448像素这样的分辨率的图像太大.此外,我认为捕获后重新缩放照片需要额外的时间,所以我也想避免这种情况.
我们可以选择以下品质:
UIImagePickerControllerQualityTypeHigh = 0
UIImagePickerControllerQualityTypeMedium = 1 default value
UIImagePickerControllerQualityTypeLow = 2
UIImagePickerControllerQualityType640x480 = 3,
UIImagePickerControllerQualityTypeIFrame1280x720 = 4,
UIImagePickerControllerQualityTypeIFrame960x540 = 5
Run Code Online (Sandbox Code Playgroud)
如果我们使用的话AVFoundation,我们可以从这个漂亮的表中选择分辨率(标题为"捕捉静止图像").
但是有没有类似的表格UIImagePickerController,例如UIImagePickerControllerQualityTypeHigh在iPhone 3gs上等于1920x1080?
如何使用objective-c去除UIImage中的所有exif数据?我已经能够使用以下内容获取exif数据:
NSData* pngData = UIImagePNGRepresentation(image);
CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)pngData, NULL);
NSDictionary* dic = nil;
if ( NULL == imageSource )
{
#ifdef _DEBUG
CGImageSourceStatus status = CGImageSourceGetStatus ( source );
NSLog ( @"Error: file name : %@ - Status: %d", file, status );
#endif
}
else
{
CFDictionaryRef propertyRef = CGImageSourceCopyPropertiesAtIndex ( imageSource, 0, NULL );
CGImageMetadataRef metadataRef = CGImageSourceCopyMetadataAtIndex ( imageSource, 0, NULL );
// CFDictionaryRef metadataRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyExifDictionary);
if (metadataRef) {
NSDictionary* immutableMetadata = (NSDictionary *)metadataRef;
if …Run Code Online (Sandbox Code Playgroud)