如何在软件开发过程中处理图像

时间:2009-08-31 18:39:15

标签: image build-process

对于软件开发,人们经常需要图像。但是当我开始处理图像时,我很快就会得到几十个版本,就像这样

  • 从一张漂亮的大尺寸图片开始,让我们说一张来自我相机的照片(x.nef)
  • 我对曝光校正和白平衡做了一些调整,将其转换为x.jpg
  • 开始通过从其他两个图像中复制各种片段来添加一些小东西。 (a.jpg,b.jpg产生分层图像x.pdn
  • 现在我将其缩放到所需的大小并将其保存为x_small.jpg

到目前为止,我有6个不同的图像文件,除了我之外没人知道它们背后的过程。

所以问题是:如何在开发过程中处理图像?

编辑: 感谢所有伟大的输入。我将各种问题结合到我个人的最佳答案中。但是我接受了jiinx0r的答案,因为它真的包含了我为这种改变应用命名约定的想法。

7 个答案:

答案 0 :(得分:6)

您可以将图像置于源代码管理之下。

那将处理修订历史和注释。如果你真的需要保留图像的所有过渡版本并且不希望在项目文件夹中使用它,那么大多数源代码控制树都有一个用于此类事物的“工具”区域。

修改 如果您追求的是跟踪各种大小(缩略图等),我会使用约定优于配置并实现统一文件(或目录)命名系统。

例如,对于同一图像的100px和500px版本,我可能会有单独的文件夹。或者我可能会将它们放在具有特殊命名约定的同一文件夹中:logo-100.jpg和logo-500.jpg ......无论哪种方式都可能很好,只需做出决定并确保在整个项目中保持一致

最后一个想法:有些人喜欢在文件名中包含大量元数据。对我而言,这取决于您的操作范围和您的个人需求。我个人默认采用更少的方法 - 如果你正在考虑投资维护这样的东西(或创建一个为你做的工具),确保它实际上是一个净的时间收益,而不仅仅是为了你的OCD与filddle!

作为开发人员,我们确实倾向于在这方面犯下明显的错误。我知道我已经多次犯了罪。

答案 1 :(得分:4)

文件命名应该通过命名约定来处理。

{name}-{mod type}-{size}-{version}-{create date}.png
{name}-final.png

e.g. 
file-white_balance-800x600-v01-20090831.png
file-white_balance-800x600-v02-20090831.png
file-final.jpg

真正的重点是创建一个商定的约定,让人们看到以下的价值 (但是你的小组需要简单/复杂)。在我的组织中,我们为输入/输出数据文件,图像,脚本等执行此操作(对于所有人来说,不一定是相同的约定,但是他们遵循一致同意的内容)

希望有所帮助。

答案 2 :(得分:3)

我努力只有一个“源”图像,然后将所有更改倒入一个简短的Python脚本或其他一些代码中,以便我可以在以后的任何时间重新创建效果和/或调整它们。

原始图像以PNG或TIFF格式保存(以避免因保存而导致质量损失)并将其转换为最后一个类型作为最后一步。这也是我进行缩放和其他有损操作的时候。

答案 3 :(得分:2)

我们开发了一个可下载的网页游戏,其中包含几百个图形资源,其中大部分都是在开发过程中存储为psd文件的。我们需要jpg和png版本的游戏发布版本和低质量的jpg和png版本的网络版本。

我们将原件检查到源代码管理中以处理版本控制。

为了保持灵活性并且能够在每次更新后不必重新打包图像两次就能改变原始图像,我们有一个Perl / ImageMagick脚本可以自动更新打包图像。

文件名保持不变,但压缩的图像将转到不同的目录,具体取决于每个图像的打包版本。

答案 4 :(得分:1)

我们通常会在名称中附加图像标题和分辨率。

myimage_800_600.png

这样,所有类似的图像都在文件夹视图中组合在一起,您可以轻松选择所需的尺寸,而不必徘徊“中等”的含义。

答案 5 :(得分:1)

我同意源控制可能是你最好的选择。然而,传统的源代码控制并不适合图像。

你看过http://www.alienbrain.com吗?

它是商业化的,但可能会有所帮助。我也在寻找并看到一些关于Photoshop或Imageready的版本控制。你可以调查一下。

答案 6 :(得分:0)

我将各种各样的答案放在一起,以满足我的需求:

  1. 图像进入源代码管理。这包括图像或中间步骤。
  2. 如果需要基于一个源图像的多个图像,但具有不同的转换,则可以将其集成到自动构建中(缩放,压缩,着色)
  3. 根据命名约定或文件夹结构,文件可以分为:源(例如原始照片),中间(用于各种处理步骤),基础(在软件中实际使用的图像或在自动处理后可能的图像)在步骤2)
  4. 对于处理步骤,命名约定应确保可以识别处理类型,以及步骤的顺序。因此,人们可以从源图像通过各种处理步骤移动到最终图像。