访问资产目录中具有特定分辨率的图像

Posted

技术标签:

【中文标题】访问资产目录中具有特定分辨率的图像【英文标题】:Accessing an image with specific resolution in the Asset Catalog 【发布时间】:2015-04-22 16:49:39 【问题描述】:

我有一个名为“SmileyFace”的图像集,其中包含 1x、2x 和 3x 图像尺寸。我想从图像集中复制特定大小的粘贴板。如何在下面的代码中以编程方式引用 1x、2x 或 3x?

let image = UIImage(named: "SmileyFace" )
let image2 = UIImagePNGRepresentation( image )
UIPasteboard.generalPasteboard().setData(image2, forPasteboardType: "public.png")

此代码复制 1x。我想复制 2x 图像。

我在Apple Documentation 中没有找到任何似乎引用此内容的内容。

【问题讨论】:

大声笑,我本来建议你使用func imageWithTraitCollection(traitCollection: UITraitCollection) -> UIImage 【参考方案1】:

你可以使用imageAsset.registerImage()方法:

  let scale1x = UITraitCollection(displayScale: 1.0)
  let scale2x = UITraitCollection(displayScale: 2.0)
  let scale3x = UITraitCollection(displayScale: 3.0)

  let image = UIImage(named: "img.png")!
  image.imageAsset.registerImage(UIImage(named: "img_2x.png")!, withTraitCollection: scale2x)
  image.imageAsset.registerImage(UIImage(named: "img_3x.png")!, withTraitCollection: scale3x)

您可以为所有比例注册 2x 图像。

但是,我认为访问具​​有特定分辨率的图像不是一个好主意。设置 1x、2x 和 3x 图像的想法是让系统决定应该加载哪个图像。如果您真的愿意,您可以将 1x、2x 和 3x 图像的名称更改为 SmileyFace-Small、SmileyFace-regular、SmileyFace-large。

更新: func imageWithTraitCollection(traitCollection: UITraitCollection) -> UIImage 可以引用特定比例的图片:

  let image1 = image.imageAsset.imageWithTraitCollection(UITraitCollection(traitsFromCollections: [scale1x]))
  let image2 = image.imageAsset.imageWithTraitCollection(UITraitCollection(traitsFromCollections: [scale2x]))
  let image3 = image.imageAsset.imageWithTraitCollection(UITraitCollection(traitsFromCollections: [scale3x]))

【讨论】:

感谢您的回复!那么,这就是您将不同比例的新图像添加到图像集中的方式吗?我不确定这如何适用于这个问题。我正在尝试在现有图像集中引用现有的 2x 图像? 这是一种从文件夹而不是图像资产中引用图像的方法。您不应从图像资源中引用具有特定分辨率(如 2x、3x)的图像。如果你真的想这样做,你应该将 1x、2x 和 3x 图像重命名为 SmileyFace-Small、SmileyFace-regular、SmileyFace-large。 我理解为什么您“通常”不想从图像资产中引用具有特定分辨率的图像。但这不是为了在应用程序中显示,而是为了粘贴板。我让 xcode 使用图像资产在每个设备需要时在界面中显示,但是为了复制到粘贴板,我想要一个特定的大小。不过感谢您的回答,我已经从您的帖子中找到了我需要的东西。谢谢!

以上是关于访问资产目录中具有特定分辨率的图像的主要内容,如果未能解决你的问题,请参考以下文章

在matlab中的图像中裁剪具有特定分辨率的图像

xcode - 资产目录 - 图像类型 - 相同的比例 - 不同的分辨率

如何为所有分辨率制作全屏图像

从资产中获取实际图像名称

你如何管理你的资产?

如何在 Xcode 资产目录中分配启动图像?