当前位置:C++技术网 > 资讯 > 项目开发软件开发分析-批量调整图片大小项目分析

项目开发软件开发分析-批量调整图片大小项目分析

更新时间:2015-08-28 12:02:34浏览次数:1+次

    我们网站 C++技术网 的文章的图片最大宽度不能超过650像素,超过之后,就很难看了。我们很多时候的截图就很大,一不小心就这样了。
    还有就是电子书封面图片,为了达到最好的效果,采用上传前将图片处理成300x370像素的大小。这样显示的时候效果最佳。因为网页显示图片一比一的无缩放的显示,效率最高,而且效果最好。大图还很占用存储空间,所以,我们采用事前处理机制,就可以解决这个问题。
    以上就是我们的需求。也就是说,我们需要手动去调整好图片,可以使用系统的画图板来处理,当然这样就很麻烦咯。为了提高效率,我们团队就提出要开发一个小工具--批量处理图片大小的软件。
    那么这么说,总结一下需求,就是下面这样的:
    1.指定目标图片大小为300x370,将原图处理成这个大小。
    2.提供另一种指定最大宽度650,高则根据原图宽高比来定。宽度小于最大宽度,则不处理。
    3.以批量处理形式完成,不需要显示图片,只需要处理好就行。

    实际上,这是基本的业务需求,当然还有很多没说的需求,作为软件开发的基本要求,我们也得知道。界面操作要方便,这个必须具备。没说的不代表没有,太基本的东西,都没有必要说,应该自觉满足。
    先说说团队两个成员完成的情况,再来分析。
    第一个方案使用QT做的。可以显示打开的图片,然后一个按钮可以一键处理多个图片。处理完后,提示一下,单击提示框的确定就关闭程序了。这个实现了功能,本机测试通过。但是我来使用的时候,发现不能显示图片,后面查出来是少了QT支持库。好吧,解决了。然后测试图片,有的图片还是无法处理。
QT实现方式
    第二个方案使用MFC做的,暂时也实现的是单个文件的处理。开始的对于几个图片的处理就混乱,结果导致后面的图片处理错误,全黑了。现在已经处理好了,是成员变量没有处理好。

MFC实现

    不过我们来总结来看,第一个方案实际上与需求不一致,在商业项目开发中,这种方案,开始就会被抛弃。与需求不一致的项目,肯定过不了设计阶段的。直接Pass。当然。后面也确实可以处理图片,但是花费了很多精力在图形界面上,图片也没有处理完善,还是有Bug。这样客户就不会满意。第二个方案软件提交一次,却被发现基本的问题,虽然已经解除问题,但是也暴漏出了问题。不过第二个方案按照了需求来做,还是可以的。

    不过这两个方案,都有一些问题。这里说一下,并提出改进建议。
    1.软件在设计的时候,就把大小定死了。而且不可调节。
    这个问题对于扩展性,应用范围太狭窄。如果稍微换一个尺寸,或者增加一个尺寸,就无法应对了。这个对于软件本身来说是致命的打击。
    所以我们在设计软件时,虽然给定了确定的大小,但是在此基础上提供额外的扩展方案,客户都不会排斥,只要你满足了基本需求,就好。况且你还轻松的实现了扩展,也没有多余花多少时间。
    2.用户体验一定要好。
    第一个QT做的,如果对于大量的图片,显示出来,那是灾难。而且,本来不需要显示。另外处理完后,点击提示消息后,程序就退出了。如果我还要处理另外一个文件夹的图片,如何?又启动一遍?这不是很麻烦吗?
    第二个方案,选择了图片文件后,点击保存就转换了,然后提示一个消息框。点击消息框之后,才可以继续操作。对于新生成的处理后的图片的命名,直接在原文件名字前加上一个序号,而且序号是软件运行时从1开始。重新运行后,又从1开始,那么启动多次,就会覆盖原先处理好的图片,而且没有提示。
    这些是细节,不过却让使用带来了不便和使用不方面。所以尽可能多考虑下使用的真实情况,提高软件使用的方便度。对于只是提示性的消息,尽可能使用一个提示文字,比如状态标签一样。除非要让用户选择,才一定要提示选择框。而且,这种频繁使用的,频繁提示就让效率大打折扣。新文件的命名,以这种方式就没有考虑到程序的多次启动,就覆盖了。为了解决这个问题,可以用原文件加上说明字符加时间来命名,就不可能重复了,且很清晰。新文件名称和包含尺寸原文件名时间等。
    3.软件测试,从自己做起。
    软件测试,不管是开发中的测试,还是发布后的测试。首先应该在自己这里通过,否则不要给别人测试有问题的程序。否则显得自己不认真。当然,自己测试也是多方面的测试,自己各个方面的测试,保证程序不崩溃,功能运作正常。不用太严格的测试,但是多次使用多次处理文件多次选择文件处理这些基本的测试,自己必须通过。在自己手上排除最基本的Bug。等这些测试都通过后,最后换成Release版本来发布。这个版本是发布后的测试版。发布软件一定要考虑到其他用户电脑没有你的开发环境,也就没有那么多的库,你需要实现打包好。
    4.开发的原则基本的要求
    在弄清楚需求以及考虑到程序的扩展性后,先设计软件逻辑和操作方式,让软件的逻辑在满足需求的基础上,再优化界面和性能。
    通过一个小软件,也发现了团队成员的项目开发经验不足,C++技术网 后面会提出更多的小软件,不仅在团队中需要,而且更多的是为了锻炼团队成员的开发水平,欢迎你加入我们团队。网站也会将这些项目开源给参与开发的人,并提供项目开发讲解,一起来学吧。