1

到目前为止,这不是一个引人注目的问题,只是我已经好奇了一段时间了。

有一个众所周知的-[UIImage resizableImageWithCapInsets:]用于创建可调整大小的图像的 API,它在对可变大小的按钮和框架进行纹理处理时非常方便,尤其是在视网膜 iPad 上,特别是如果您有很多这样的 API,并且您希望避免使用图像资源使应用程序包变得臃肿。

对于给定的图像,无论我们想要将其拉伸到多大的大小,cap insets 通常是恒定的。我们也可以这样说:帽子插图是给定图像的特征。所以事情就是这样:如果它们在逻辑上属于图像,为什么我们不将它们与图像一起存储(作为某种元数据),而不是在我们必须创建新实例的任何地方指定它们?

在日常实践中,这可能会产生严重的好处,主要是通过消除过程中出现人为错误的可能性。如果创建图像的设计人员可以在导出图像文件本身时嵌入适当的上限值,那么开发人员将不再需要在代码中编写幻数并在每次图像更改时更新它们。resizableImage API 可以自动读取和应用大小写。哎呀,即使是一个类别UIImage也可以。

因此我的问题是:是否有任何可靠的方式将元数据嵌入图像中?

我想强调这两个词:

  • 可靠:我已经在可选的 PNG 块上看到了一些条目,但我担心一旦 iOS PNG 优化器启动,这些条目就会消失。或者有没有办法防止这种情况发生?(以及让优化器完成它的工作)
  • 嵌入:我曾考虑在文件名中包含元数据,类似于 Apple 所做的,即“@2x”、“~ipad”等,但具有千米长的名称,如“image-20.0-20.0-40.0-20.0@2x”。 png”似乎不是正确的方法。

任何人都可以想出聪明的解决方案吗?

4

1 回答 1

0

Android 有一个名为九补丁的文件类型,它基本上是图像和元数据的片段来构建它。也许可以制作一个类来复制它。http://developer.android.com/reference/android/graphics/NinePatch.html

于 2012-05-07T21:58:10.000 回答