我想从UIImagePickerController加载图像,然后将选定的照片保存到我的应用程序的文档目录中.
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
NSData *data1 = UIImagePNGRepresentation(image);
NSString *fileName = "1.png";
NSString *path = //get Document path, then add fileName
BOOL succ = [data1 writeToFile:path atomically:YES];
Run Code Online (Sandbox Code Playgroud)
但是在我将图像保存到我的文档后,我发现,图像旋转了90度,然后我将方法UIImagePNGRepresentation更改为UIImageJPEGRepresentation,这次没关系,有谁知道问题是什么?
我需要转换UIImage
为NSData
但不使用UIImagePngRepresentation
或者UIImageJpegRepresentation
,对于来自photolib的图像我可以使用此处提到的assetlib方法使用ALAssetsLibrary和ALAsset取出Image作为NSData,但对于捕获的图像,assset url不存在因此在那种情况下我需要转换UIImage
直接用exif数据的字节,我该怎么做到这一点?请帮忙
我正在写一个基于iOS应用程序的Mac应用程序.下面的代码将UIImage转换为NSData以上传到Parse.com.
我想为Mac做同样的事情,但我似乎无法将其转换为NSData.我该怎么办?
谢谢
var image = UIImage(named: "SmudgeInc")
let imageData = UIImagePNGRepresentation(image)
let imageFile = PFFile(name:"image.png", data:imageData)
Run Code Online (Sandbox Code Playgroud) nsimage uiimage nsdata uiimagepngrepresentation parse-platform
我正在生成一堆瓷砖CATiledLayer
.在iPhone 4S上以4个级别的细节生成120个256 x 256的图块需要大约11秒钟.图像本身适合2048 x 2048.
我的瓶颈是UIImagePNGRepresentation
.生成每256 x 256图像大约需要0.10-0.15秒.
我已经尝试在不同的背景队列上生成多个图块,但这只会将其减少到大约9-10秒.
我也尝试使用ImageIO框架,代码如下:
- (void)writeCGImage:(CGImageRef)image toURL:(NSURL*)url andOptions:(CFDictionaryRef) options
{
CGImageDestinationRef myImageDest = CGImageDestinationCreateWithURL((__bridge CFURLRef)url, (__bridge CFStringRef)@"public.png", 1, nil);
CGImageDestinationAddImage(myImageDest, image, options);
CGImageDestinationFinalize(myImageDest);
CFRelease(myImageDest);
}
Run Code Online (Sandbox Code Playgroud)
虽然这会产生较小的PNG文件(赢!),但它需要大约13秒,比以前多2秒.
有没有办法CGImage
更快地编码PNG图像?也许使用NEON
像libjpeg-turbo这样的ARM扩展(iPhone 3GS +)的库呢?
是否有比PNG更好的格式来保存不占用大量空间的瓷砖?
我能够提出的唯一可行选择是将磁贴大小增加到512 x 512.这会将编码时间减少一半.不知道那会对我的滚动视图做些什么.该应用适用于iPad 2+,仅支持iOS 6(使用iPhone 4S作为基线).
uiimage catiledlayer ios cgimageref uiimagepngrepresentation
我们遇到了一个奇怪的崩溃,其中UIImagePNGRepresentation()有时会导致png_error调用.我们无法在内部任何设备上重现此错误.
以下是我们的HockeyApp崩溃日志中的堆栈跟踪示例:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x3167132c __pthread_kill + 8
1 libsystem_c.dylib 0x33d6729f abort + 94
2 ImageIO 0x346c38bf png_error + 114
3 ImageIO 0x346c2fe3 png_write_end + 46
4 ImageIO 0x346bf069 writeOnePng + 2260
5 ImageIO 0x346be78b _CGImagePluginWritePNG + 82
6 ImageIO 0x346be6fd CGImageDestinationFinalize + 132
7 UIKit 0x31346e23 UIImagePNGRepresentation + 274
Run Code Online (Sandbox Code Playgroud)
我们只在运行iOS 5.1及更高版本的设备上看到此崩溃日志.我们实际上已经从iOS 6崩溃了,所以这个bug还没有修复.
我编写了一个测试应用程序,可下载超过16,000个可能的图像,我们的应用程序可以显示这些图像,所有这些图像都可以下载并保存到磁盘而没有任何问题.对这个要点的一些回应暗示这个问题可能是由于图像损坏引起的,但看到我如何下载超过16,000张图片而且从未出现过问题,我认为不会出现这种情况.
我正在研究的最新假设是,以某种方式下载的数据已损坏,因此正在创建损坏的UIImage.但是,所有创建损坏的UIImage的尝试都失败了.Apple似乎为UIImage创建了一个健壮的构造函数,这样我传入的任何无效内容都会导致从构造函数返回nil.
UIImagePNGRepresentation有没有其他人经历过这样的事情?
我正在使用UIImagePNGRepresentation
保存图像.结果图像的大小为30+ KB,在我的情况下这是大的.
我尝试使用UIImageJPEGRepresentation
它,它允许压缩图像,所以图像保存在<5KB大小,这是伟大的,但保存为JPEG给它白色背景,我不想要(我的图像是圆形的,所以我需要保存它透明背景).
如何压缩图像大小UIImagePNGRepresentation
?
objective-c uiimage uiimagejpegrepresentation ios uiimagepngrepresentation
为什么要UIImagePNGRepresentation(UIImage())
回报nil
?
我正在尝试UIImage()
在我的测试代码中创建一个断言它是否正确传递.
我对两个UIImage的比较方法使用了UIImagePNGRepresentation()
,但由于某种原因,它正在返回nil
.
谢谢.
在我正在开发的应用程序中,我使用的是用户从相册中选择的图像.我需要将该照片的高分辨率版本上传到我的服务器.
我正在使用imagePickerController,我已经确定我有2个选项
我的问题是...... 如果我使用第一个选项和第二个选项,图像的质量是否有任何差异?
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
//option 1
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSData *imgData = UIImagePNGRepresentation(image);
// option 2 (will prompt user to allow use of current location)
NSURL *imgURL = [info objectForKey:@"UIImagePickerControllerReferenceURL"];
__block NSData* imgData;
ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
[assetLibrary assetForURL:img resultBlock:^(ALAsset *asset)
{
ALAssetRepresentation *rep = [asset defaultRepresentation];
Byte *buffer = (Byte*)malloc(rep.size);
NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
imgData = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
}
failureBlock:^(NSError *err) {
NSLog(@"Error: %@",[err …
Run Code Online (Sandbox Code Playgroud) 我目前正在制作照片编辑应用.
当用户选择照片时,使用以下代码将其自动转换为黑白照片:
func blackWhiteImage(image: UIImage) -> Data {
print("Starting black & white")
let orgImg = CIImage(image: image)
let bnwImg = orgImg?.applyingFilter("CIColorControls", withInputParameters: [kCIInputSaturationKey:0.0])
let outputImage = UIImage(ciImage: bnwImg!)
print("Black & white complete")
return UIImagePNGRepresentation(outputImage)!
}
Run Code Online (Sandbox Code Playgroud)
我对此代码的问题是我一直收到此错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)
我的代码略有不同,但是当它到达该UIImagePNG/JPEGRepresentation(xx)
部分时它仍然会中断.
是否有任何方法可以从CIImage中获取PNG或JPEG数据,以便在图像视图/ UIImage中使用?
任何其他方法都没有详细说明应该使用什么代码.
uiimage uiimagejpegrepresentation uiimagepngrepresentation ciimage swift
我想从UIImagepicker中选择一个图像,在相机胶卷中有PNG和JPG格式.
我需要将其转换为NSData.不过,我需要知道这是图像UIImageJPEGRepresentation
还是UIImagePNGRepresentation
,所以我可以将其转换.
UIImage *orginalImage = [info objectForKey:UIImagePickerControllerOriginalImage];
[picker dismissViewControllerAnimated:YES completion:nil];
NSData *orgData = UIImagePNGRepresentation(orginalImage);
Run Code Online (Sandbox Code Playgroud) iphone xcode uiimagejpegrepresentation ios uiimagepngrepresentation
uiimage ×6
ios ×5
iphone ×3
nsdata ×2
swift ×2
xcode ×2
assets ×1
catiledlayer ×1
cgimageref ×1
ciimage ×1
cocoa-touch ×1
image ×1
ios5 ×1
ios5.1 ×1
nsimage ×1
objective-c ×1
png ×1