我捕获了一个播放闪光灯的webview图像。因为我想显示这个图像并使用IKSaveOptions来保存图像。但是我发现图像的路径是零,现在我想得到图像的路径,怎么办? 我的代码: NSString * path = [[NSBundle mainBundle] pathForResource:?? ofType:??]; NSURL * url = [NSURL fileURLWithPath:path]; 然后我使用url在imageview中显示图像,但是现在我没有得到路径,非常感谢!
非常感谢。现在我认为NSBundle不是我的选择。但是我希望从显示闪光的webview中显示捕获它的图像。我可以在imagecell中显示它,但是在imageview中显示,我使用代码:
[imageView setImage:image imageProperties:mImageProperties];
并且mImageProperties来自您之前的文档,我带了ImageKit文档,名称是“在图像视图中查看图像”,其中mImageProperties是图像的属性。代码是:
mImageProperties =(NSDictionary *)CGImageSourceCopyPropertiesAtIndex(isr,0,(CFDictionaryRef)mImageProperties);
仍然是图像的网址,如果我不能使用NsBundle,我怎么做才能获得图像的属性,顺便说一下,我已经获得了显示闪光的捕获webview的图像。代码:
NSBitmapImageRep * imageRep = [webView bitmapImageRepForCachingDisplayInRect:[webView frame]]; [webView cacheDisplayInRect:[webView frame] toBitmapImageRep:imageRep]; NSImage * image = [[NSImage alloc] initWithSize:[webView frame] .size]; [image addRepresentation:imageRep];
答案 0 :(得分:3)
好的,你在这里混淆了很多东西。首先,IKSaveOptions不会保存。它是一种向用户提供有关要保存的选项的接口的机制,但它实际上并不将文件保存在任何地方。要保存文件,请使用基础CGImage机制,如ImnageKit documentation中所述。我想如果您在那里阅读示例代码,那么将清楚保存文件的路径在哪里。
现在,关于第二个问题。你永远不会使用pathForResource:ofType来获取它。这将获得应用程序包中的资源。换句话说,作为应用程序一部分的东西,在构建时包含它。你应该在构建之后从不修改你的包内容,除了复杂之外,它将使代码签名的应用程序无效。相反,您应该使用CGImage或NSImage来读取它。
答案 1 :(得分:0)
NSImage *theimage = [[NSImage alloc] initWithSize:tmpRect.size];
[theimage addRepresentation:imageRep];
CGImageSourceRef isr = CGImageSourceCreateWithData((CFDataRef)[theimage TIFFRepresentation], NULL);
CGImageRef image = NULL;
if (isr)
{
image = CGImageSourceCreateImageAtIndex(isr, 0, NULL);
if (image)
{
mImageProperties = (NSDictionary*)CGImageSourceCopyPropertiesAtIndex(isr, 0, (CFDictionaryRef)mImageProperties);
}
CFRelease(isr);
}
if (image)
{
[imageView setImage:image imageProperties:mImageProperties];
CGImageRelease(image);
}