从 NSData 显示 NSImage

发布于 2024-10-22 06:26:09 字数 843 浏览 2 评论 0原文

我的目标是在视图中显示图像。 考虑到我有一个:

  • IBOutlet NSImageView *image 用于显示我的图像
  • NSData *imageData 用于读取图像文件
  • NSImage *imageView

在 imageData 中存储图像(我使用了 initWithContentsOfFile 方法)。

现在,如果我用以下方法初始化 imageView:

NSImage *imageView = [[NSImage alloc] initWithContentsOfFile:path];

我可以正确地看到图像的渲染,但通过这种方式,我从文件系统读取两次。

如果我尝试:

NSImage *imageView = [[NSImage alloc] initWithData:imageData];

显示的图像非常小..像拇指

Whit CGImageRef:

CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)imageData, NULL);
CGImageRef imageRef= CGImageSourceCreateImageAtIndex(imageSource, 0, nil);
NSImage *imageView = [[NSImage alloc] initWithCGImage:imageRef size:NSZeroSize];

图像仍然呈现太小。

如何以原始分辨率显示图像?

My target is to display an image in a view.
Considering I've an:

  • IBOutlet NSImageView *image for display my image
  • NSData *imageData for readig the image file
  • NSImage *imageView

In imageData is stored the image (I've used initWithContentsOfFile method).

Now, if I initialize imageView with:

NSImage *imageView = [[NSImage alloc] initWithContentsOfFile:path];

I can see the rendering of the image correctly, but in this way I'm reading twice from the file system.

If I try to:

NSImage *imageView = [[NSImage alloc] initWithData:imageData];

The displayed image is very small..like thumb

Whit CGImageRef:

CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)imageData, NULL);
CGImageRef imageRef= CGImageSourceCreateImageAtIndex(imageSource, 0, nil);
NSImage *imageView = [[NSImage alloc] initWithCGImage:imageRef size:NSZeroSize];

The image is still rendering too small.

How can I display the image in original resolution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬花如无物 2024-10-29 06:26:09
NSImage *imageView = [[NSImage alloc] initWithData:(NSData *)imageData];
NSImage *imageView = [[NSImage alloc] initWithData:(NSData *)imageData];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文