我有一个UIImage,它是一个GIF文件.
我需要让它成为一个NSData对象.但它需要保留一个GIF,所以我不能使用UIImageJPEGRepresentation.
有任何想法吗?
在我的应用程序中,我有一个以caf和aac格式存储的音频文件.我需要从音频网址获取kb中音频文件的大小.有没有办法达到这个要求?
我知道我们可以使用创建电影播放器initWithContentURL:,我们可以传递NSUrl参数.这里我没有NSUrl,我只有NSData.通过使用它我可以创建电影播放器吗?
NSData * data;
NSFileHandle * file;
file = [NSFileHandle fileHandleForReadingAtPath: @"script.txt"]; //this is wrong, as I have to provide a full pathname, but disregard for now
[file seekToFileOffset: i]; //i not mentioned here, as this is only a snippet of code. Suffice to know that in the file it falls at the beginning of an integer I want to read
data = [file readDataOfLength: 5]; //5-digit integer that I want to read
Run Code Online (Sandbox Code Playgroud)
现在我如何将数据转换为可以使用的int(即用于执行算术运算)?
以下是代码:
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
[imageData writeToFile:savedImagePath options:NSDataWritingAtomic error:&error];
if(error != nil)
NSLog(@"write error %@", error);
Run Code Online (Sandbox Code Playgroud)
错误:
write error Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be completed. (Cocoa error 4.)" UserInfo=0x8b7b850 {NSUnderlyingError=0x8b7d7c0 "The operation couldn’t be completed. No such file or directory", NSFilePath=/Users/alfa-1/Library/Application Support/iPhone Simulator/6.0/Applications/C24B228A-599E-4249-97A7-17775E8A546B/Library/Caches/ChannelListImages/http:/direct.domain.com/files/icons/1-all-cb.jpg, NSUserStringVariant=Folder}
Run Code Online (Sandbox Code Playgroud) 我用相机制作了相机AVFoundation.
一旦我AVCaptureStillImageOutput完成了它的captureStillImageAsynchronouslyFromConnection:completionHandler:方法,我就像这样创建一个NSData对象:
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
Run Code Online (Sandbox Code Playgroud)
一旦我有了这个NSData对象,我想将图像 - 不用 - 转换为a UIImage.我发现我可以转换成a CGImage来这样做.
在我拥有imageData之后,我开始转换为CGImage的过程,但我发现CGImageRef最终比NSData对象大三十倍.
下面是我用来转换为代码CGImage来自NSData:
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)(imageData));
CGImageRef imageRef = CGImageCreateWithJPEGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault);
Run Code Online (Sandbox Code Playgroud)
如果我尝试NSLog超出图像的大小,当它NSData是一个1.5-2兆字节的图像时,它会达到30兆字节!
size_t imageSize = CGImageGetBytesPerRow(imageRef) * CGImageGetHeight(imageRef);
NSLog(@"cgimage size = %zu",imageSize);
Run Code Online (Sandbox Code Playgroud)
我想也许当你从NSData转到CGImage时,图像会解压缩,然后如果我转换回NSData,它可能会回到正确的文件大小.
imageData = (NSData *) CFBridgingRelease(CGDataProviderCopyData(CGImageGetDataProvider(imageRef)));
Run Code Online (Sandbox Code Playgroud)
以上与对象NSData相同.lengthCGImageRef
如果我尝试保存图像,则图像是无法打开的30mb图像.
我对使用CGImage完全不熟悉,所以我不确定我是从NSData转换为CGImage还是错误地返回,或者我是否需要调用某种方法再次解压缩.
提前致谢,
将
我正在尝试使用AFNetwork上传一个NSData图像,但出现了问题,我无法找到我的错误
这是我的代码:
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"test.jpg"], 0.1);
NSMutableDictionary *postParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"this is only a test post for \"app\".", @"app",
@"this POST for \"test\". ", @"test", nil];
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://url/upload.php" parameters:postParm constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" ];
} error:nil];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSProgress *progress = nil;
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
} else …Run Code Online (Sandbox Code Playgroud) nsdata afnetworking afnetworking-2 nsurlsession nsurlsessionuploadtask
我正在接受NSData我的套接字接收功能,我正在尝试将该数据复制到tempbuffer我的音频类中,我正在使用外部类型全局变量来执行此操作.
这是我的代码:
memcpy([recorder tempBuffer].mdata,(__bridger const void *)data,data.length);
Run Code Online (Sandbox Code Playgroud)
这里记录器是我extern的音频类的全局变量.
当控制到达这行代码时抛出异常,可能是错误.
我在Swift中与服务器通信,检索图像数据.传入的数据被编码为base64字符串.我能够正确接收和显示编码的字符串.当我去使用NSData该类将字符串解码回二进制数据并显示...
println(NSData(base64EncodedString: imageString, options: NSDataBase64DecodingOptions(0)))
Run Code Online (Sandbox Code Playgroud)
输出是
nil
nil
nil
nil
nil
nil
Run Code Online (Sandbox Code Playgroud)
每个收到的图像一个.
我也试过了
println(NSData(base64EncodedString: imageString, options: nil))
Run Code Online (Sandbox Code Playgroud)
和相同的结果.沿路有什么我想念的吗?我会把图像串放好但是它们很长......
我一直在使用它来将CIImage转换为NSData很久了:
NSData *data = [imageRep representationUsingType: NSPNGFileType
properties:nil];
Run Code Online (Sandbox Code Playgroud)
现在在El Capitan的第二行出现此错误:
Null passed to a callee that requires a non-null argument
Run Code Online (Sandbox Code Playgroud)
我可以通过在属性上使用空数组来解决此问题,如下所示:
NSData *data = [imageRep representationUsingType: NSPNGFileType
properties: @{}];
Run Code Online (Sandbox Code Playgroud)
但是我怀疑这将来会给我带来麻烦。
这是解决此问题的正确方法吗?
nsdata ×10
ios ×5
objective-c ×5
iphone ×2
afnetworking ×1
audio ×1
base64 ×1
cgimage ×1
cgimageref ×1
ciimage ×1
cocoa ×1
cocoa-touch ×1
macos ×1
memcpy ×1
nsurlsession ×1
swift ×1
video ×1
writetofile ×1