一、写在前面

我就是一名普通的科技数码爱好者,和Eagle和Billfish没有利益相关,Eagle的授权是自己付费购买的,Billfish本身就是免费的,也就不解释了。


我对软件的分享是居有主观性的,对各位对图片管理有需求的小伙伴分享了我的使用观点,我只是分享一个产品的使用过程的主观感受,但不应该成为你使用某款软件的决定性因素。

现在这个时代,信息传递方式都被颠覆了,不管观点多么离谱,都有一大堆人点赞,我们会看到利益相关的回答/文章一味的吹捧,同样会看到因为利益相关一味的为黑而黑,我不会标榜自己多么的客观,真的没必要,任何的分析和评测都是基于个人能力和偏好的主观表现。

无论是Billfish还是Eagle,都有自己固定的客群,也都有自己的优点和缺点,但有时候无形的优点比看到的优点更重要,而被忽视的缺点比表面的缺点更为致命,作为用户要具备对问题有独立的思考能力。

这篇文章不会去介绍两个软件基本功能介绍,如何导入素材?如何采集图片?如何进行检索..... 这些必要性真的不大,但凡知道这两个软件的,我相信他们对功能性的了解可能比我更熟知。我更希望能从我的几个需求痛点去分析。

二、迁移替换成本

为什么我要将迁移成本放到第一位?

因为在使用笔记管理软件的时候,我遇到的最大问题就是迁移成本,最早使用的是有道云笔记,感觉顺手之后直接续费到了2030年,曾经以为自己会对有道云不离不弃,但我总归是高估了自己的忠诚度。在有道云笔记beta发布后,我是彻底死心了,我可以接受你化妆,也可以接受你美颜,甚至你整容也没关系,但是你不能往差处整啊,既然你自己作死,我只能另寻新欢了,可是却发现没法迁移了,导出的文件要么是PDF,要么是YNU格式,我去太流氓了,果断弃之。

所以在其他领域的软件,我也尽量考虑可迁移性。

1、Eagel:侵占式

Eagle是以完全复制的形式进行存储的,也就是说Eagle导入的方式只有一种,就是复制的形式,文件的存储信息是以metadata.Json的形式进行保存,因为其特殊的存储方式,在脱离软件后文件架构是无法进行使用。

有小伙伴会说,我可以导出啊,导出后再整理。你能想到,我当然也能想到了。

导出到计算机:此种方式为导出到计算机,也算是常用的方法。

导出后呈现的就是这样,可这不是我需要的呀,我可能花费N天的时间建立了图片标签、文件夹结构、图片注释等信息,一切都重归于零了,即便其他信息我不要,给我保留最基础的文件夹结构可好?

导出素材包:这个更不用说了,只能导入到Eagle软件使用。

2、Billfish:非侵占式

Billfish的存储格式是C++&Qt+SQLite,导入文件有三种方式

(1)索引模式

索引即将原路径的文件,通过快捷链接的方式在软件中进行展示。进行索引时原始素材的路径和文件都不会发生变更。素材仅以快捷方式的方式存在于软件中。

简单来说就是,我在D盘建立了「家人相册」文件夹,我在此文件夹下又根据「年份」建立了文件夹,根据年份分别放置不同的照片,我甚至在年份下有根据「人物」不同建立文件夹。

我使用索引的方式,Billfish可以直接读取资源管理器上整理好的文件夹结构,也可以对其他路径的文件夹进行索引,管理图库的同时还能最大限度的节约存储空间。

无论是通过软件还是在资源管理器中,进行素材的增删都不会相互影响,即便后续不使用Billfish,整理好的文件结构也不会发生变动。

弊端当然也有,就是选择索引模式后,原始图片位置发生变化、改变了文件名等操作,都会造成软件无法读取素材,所以尽量不移动文件。

(2)复制

复制顾名思义是将选中的文件复制到素材库所在的文件夹中,这样可以保证原路径的素材不会变动。通过软件的整理不会影响到原来的文件,可以作为素材的一个备份选择,但是会额外占用磁盘空间。

(3)剪切

剪切和大家常用的资源管理器功能一致。当选择剪切时,软件会将选中的原路径的文件,移动到你创建的素材库所在的文件夹路径中。从而将零散的素材文件归集到一处,同时可以节省你的电脑磁盘空间。

如果硬盘空间比较大,可以选择复制模式;如果硬盘空间比较小,可以选择剪切模式;如果为了后期迁移方便,并且保留原始文件目录,索引是你正确的选择。

3、总结

三、软件技术方案

1、开发框架

Eagle:Electron

Electron是一个基于 Chromium 和 Node.js, 使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架。适合一些偏业务的应用,对性能没有很多要求,主要是业务逻辑和UI展示,比较轻量级的应用。因为Electron可以一份代码同时得到网页版和桌面版,所以如果你的应用还需要网页版,那么Electron可以极大地节省你的开发和维护成本。当然从性能来说Electron本身也是巨大的内存和cpu的杀手,就是很消耗这些资源。

Billfish:QT

Qt适合一些性能要求高的桌面应用,如果你只打算做桌面端的话,你用electron要么是没法做,要不就是体验非常烂。而Qt则是一个更优的选择,性能好,而且出来这么多年,在PC平台上都很稳定,很适合高性能要求程序,比如WPS、斗鱼、yy语音、Opera、咪咕音乐、Skype、豆瓣电台、虾米音乐,以及部分adobe的桌面工具都是Qt做的。

总结

Qt适合于高性能的专业应用,Electron适合想要把网页版和桌面端共享代码,同时对性能没有苛刻要求的场景。如果不在乎成本,Qt一定是体验更好。

为什么会有很多软件会使用Electron进行开发,因为开发和维护成本低呀,QT是C++,Electron是JS,现在会C++的人越来越少,因为其并不是一个容易上手的语言,你根本不好招人,相对来说JS招人并不难吧。

2、数据库

Eagle:Json

Json的优势在于灵活,可以存储文本,并且关联存储图像等数据,可以将其理解为小型数据库,如果不是不复杂的业务,用Json作数据库也未尝不可。

但是Json作为数据库也有局限性,例如它查找数据,需要将所有数据全部进行读取,然后再进行查找,这种逻辑在数据量小的情况是没问题的,但是随着数据存储的增加,达到一定量级的时候,每次查询数据,都需要把整个数据库进行加载查询,那么Json就会非常低效的,一般稍微复杂的场景都不会用Json作为数据库。

Billfish:SQLite

SQLite是一个轻量级、跨平台的关系型数据库,一般用于嵌入系统或者小规模的应用软件开发中。

当然也会有用户提及MySQL,用于反驳效率比SQLite更好,首先我们需要理解的是,我们本次探讨范围仅限于单机软件层面,MySQL是一个Server,而SQLiteL是一个lib,试想一下,我不可能安装一个图片管理软件,还要启动一个MySQL,然后软件还需要在启动RPC,这不符合常理。对于一个图片管理软件来说,SQLite是入门数据库的好选择,读多写少,不需要并发写的应用场景,当然你非要抬杠说12306的,那算我什么都没说,毕竟微信、QQ用的都是SQLite

Json只不过是一种数据格式,你可以理解数据仓库,但Json本身不不适用当做数据库来使用,如果数据少并且不复杂,也无可厚非,但是数据如果复杂庞大,就显示不合理了,Json在技术使用上无法代替数据库,假设你存储了10万个文件,那么相对应的Json文件也是10万个,每个Json文件里有55个key value,你进行一个筛选选择,理论上需要对550万个key value读出内存,然后筛选出你所需要的最多几 KB 的 value ,然后给你筛选出所需要的文件。

数据库的意义在于数据持久化,持久性的数据还是需要存储到数据库才可以,SQLite数据库的存储效率、查询效率都高。

3、总结

C++&Qt+SQLite

SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。

Qt5以上版本可以直接使用SQLite,对于桌面级软件开发无疑是一个良好的选择,SQLite数据库的目的在于可以非常方便地对海量数据进行增删查改。

Electron+Json

Electron基于 Chromium 和 Node.js的框架,适合轻量级的应用开发,做个音乐播放器还成,用于海量图片素材的管理,有些力不从心。

Json的优势在于灵活,JSON诞生之初就是JavaScript语言的一个子集,现在独立成一种轻量数据交换格式,json 设计初衷并不是来做数据存储。

四、数据测试方案

不要过于关注我测试平台电脑极差无比,没办法,小微公司能有电脑用就不错了。既然是平台、 同一素材,理论不影响测试结果

测试平台:CPU: i5-3450 内存:16G 硬盘:希捷普通机械硬盘

软件版本:Eagle 2.0(20211020) Billfish2.1.0.14

素材来源:从花瓣采集34个画板

素材格式:图片

素材数量:10000张 (为计算方便删除部分图片,保留至10000张)

测试环节:所有图片导入速度、所有图片添加标签、所有图片去除标签、所有图片添加备注、所有图片编辑备注、删除所有图片速度、颜色筛选速度、宽度高度筛选速度、文件大小筛选速度。

计时方法:通过屏幕录像,将视频导入至剪映,精确是毫秒。

1000张图片测试

五、总结

你说其他的功能性的,其实在内卷的这个时代,底层是无法推倒重来的,但是对于具体功能点的迭代升级,大家也都在做竞赛。

你是收费,我免费。

你有截图工具,我也有截图工具;

你支持81格式,我也支持61种格式;

你的界面风格备受好评;我已经将产品经理祭天了;

你有快速收藏网页上的图片,我也支持高效快速的素材采集;

你的浏览器扩展插件支持5款浏览器,我的浏览器扩展插件已经支持7款;

你未来支持图片exit信息导入,我未来实现自动识别图片主体并自动标记;

对于图片管理软件的功能迭代升级,一直都在进行,我今天就不对具体功能进行截图分析了,各位小伙伴在他们各自的官网都会看到,知识库一个比一个丰富。

这篇文章主要从另一个角度进行去对比每个软件的不同,从软件开发者的初衷,从软件开发者未来的发展方向,去了解软件的利弊以及未来的生命周期。