如何获取临时图像的路径和网址?

时间:2009-02-13 03:36:51

标签: cocoa

我捕获了一个播放闪光灯的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];

2 个答案:

答案 0 :(得分:3)

好的,你在这里混淆了很多东西。首先,IKSaveOptions不会保存。它是一种向用户提供有关要保存的选项的接口的机制,但它实际上并不将文件保存在任何地方。要保存文件,请使用基础CGImage机制,如ImnageKit documentation中所述。我想如果您在那里阅读示例代码,那么将清楚保存文件的路径在哪里。

现在,关于第二个问题。你永远不会使用pathForResource:ofType来获取它。这将获得应用程序包中的资源。换句话说,作为应用程序一部分的东西,在构建时包含它。你应该在构建之后从不修改你的包内容,除了复杂之外,它将使代码签名的应用程序无效。相反,您应该使用CGImage或NSImage来读取它。

答案 1 :(得分:0)

好的,我有答案。 NSBitmapImageRep * imageRep = [webView bitmapImageRepForCachingDisplayInRect:tmpRect];     [webView cacheDisplayInRect:tmpRect toBitmapImageRep:imageRep];

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);
}