【问题标题】:Initialize an image from a given path in swift?快速从给定路径初始化图像?
【发布时间】:2023-03-20 09:38:01
【问题描述】:

我在 Objective-C 中有这段代码

selectedImage = [[NSImage alloc] initWithContentsOfFile:[_thePath path]];

if (selectedImage.size.width < selectedImage.size.height) {
    imageProportion =selectedImage.size.height /selectedImage.size.width ;
    [selectedImage setSize:NSMakeSize(690.0, 690.0* imageProportion )];
} else{
    imageProportion =selectedImage.size.width /selectedImage.size.height ;
    [selectedImage setSize:NSMakeSize(690.0* imageProportion, 690.0)];
}
[_imageEditorWindow orderFront:nil];
[_imageViewEditor setFrameSize:NSMakeSize(selectedImage.size.width, selectedImage.size.height)];
initialImageSizeH = selectedImage.size.height ;
initialImageSizeW = selectedImage.size.width ;
[_imageViewEditor setImage:selectedImage];
[_imageViewEditor setFrameOrigin:NSMakePoint(45, 35)];

如果我在 Playground 中用 Swift 编写此代码,我会收到错误消息:

var selectedImage = NSImage(byReferencingURL: NSURL (string: "/Users/admin/Desktop/10658771_575156615924178_8253607361793017933_o.jpg")!)

2014-11-04 15:32:37.582 MyPlayground[2327:701632] CFURLCopyResourcePropertyForKey 失败,因为它通过了这个没有方案的 URL:/Users/admin/Desktop/10658771_575156615924178_8253607361793017933_o.jpg 11 月 4 日 15:32:37 imac.inf.ucv.local MyPlayground[2327] : ImageIO: CGImageDestinationFinalize 图像目标必须至少有一个图像 2014-11-04 15:32:37.592 MyPlayground[2327:701632] CGImageDestinationFinalize 输出类型“public.tiff”失败

如果我使用此代码:

var selectedImage = NSImage(byReferencingFile: "/Users/admin/Desktop/10658771_575156615924178_8253607361793017933_o.jpg")

ov 4 15:34:56 imac.inf.ucv.local MyPlayground[2331] : ImageIO: CGImageDestinationFinalize 图像目标必须至少有一个图像 2014-11-04 15:34:56.014 MyPlayground[2331:701825] CGImageDestinationFinalize 输出类型“public.tiff”失败

那么,有什么问题吗?这些错误说我的文件不是图像?

【问题讨论】:

    标签: objective-c macos swift xcode6


    【解决方案1】:

    它正在寻找图像的 TIFF 表示。尝试将NSBitmapImageRep 添加到NSImage。我最近遇到了这个问题,发现创建 NSBitmapImageRep 并将其添加到 NSImage 表示已清除。

    假设该图像是NSImage 实例

    let cg = image.CGImageForProposedRect(nil, context: nil, hints: nil)!
    let rep = NSBitmapImageRep(CGImage: cg)
    image.addRepresentation(self.bitmapRep)
    

    试一试,看看它是否效果更好。现在您的方法应该能够从图像中获取 TIFF 表示。

    【讨论】:

    • 你能举一个客观的例子来说明你提出的答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2023-03-08
    • 2020-05-14
    • 2020-04-30
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    相关资源
    最近更新 更多