标签归档: 开源

介绍一个照片管理工具:PhotoPrism

最近发现一个跟jAlbum功能高度一致的相册工具,PhotoPrism,安装步骤不复杂,这里不作介绍。准备拿来跟jAlbum对比一下。看了官网的Demo,发现跟我之前做jAlbum时预想的功能完全一致:照片分类、人脸识别、照片日历还有照片打Tag,最重要的是,我一直不会做的界面,这个工具的要好用很多。赶紧docker安装试用了一下,挂载Home Server下的图片目录,在照片比较少时,完成加载很快,但是照片一但多了,就很慢。下面从各个维度对比一下,以打分的方式比较 :-)

比较项 jAlbum PhotoPrism
人脸识别 借助于第三方系统,识别精确特别是人脸对比方面精准。
5分
使用Pigo,All In One的方式,识别准确率较低。
3分
图片场景识别 不支持 支持识别图片场景,自动打标签,准确率不高
3分
备份照片到远端 支持对象存储(华为OBS和Amazon S3)
4分
使用Webdav协议备份。某些云盘支持WebDAV,因此可以网云盘备份照片。
4分
视频管理 支持
4分
支持,支持从照片中抽帧并做图片分析。
4分
界面 简陋
2分
界面精美,动态页面非常好用,支持编辑元数据,指定人像名字,编辑人像。
5分
客户端 浏览器 浏览器,有准备推出手机端的应用。
自动识别新增文件 支持
4分
需要手动点击分析图片文件按钮。
2分
支持上传照片 不支持 支持
支持自动备份手机照片 不支持 不支持
访问安全 支持简单的发放Token方式,支持Https 支持单账号登录。
照片分享 不支持 支持
功能定制 支持通过服务端参数定制很少的页面行为。
2分
支持在界面配置各种功能。
5分
性能 流畅
4分
页面响应明显卡顿。
2分
技术栈 Java、少量JS、处理EXIF信息、FFmpeg、SQLite。
更多依赖第三方服务。
Golang、Vue.js、SQLite、处理EXIF信息、FFmpeg、WebDAV。
All In One,几乎不依赖第三方
开发规模 个人玩具 ^_^,16年基本完成,后面没在大规模开发。 形成规模的开源社区,多人协作开发,正在商业化的路上。18年开始在Github开源,具体开始时间不详。
| 1 分2 分3 分4 分5 分 (5.00- 2票) Loading ... Loading ... | 归档目录:WEB网络, 数码硬件 | 同时打有标签:, , , |

家用网络相册jAlbum安装使用指南

一、简介

在基于自攒的PC搭建了Home NAS系统之后,使用btsync工具将家里的各个终端的照片和视频集中备份到了Home NAS。主要是台式电脑、笔记本和家人的各个手机上面的照片、拍摄视频、微信聊天视频和朋友圈短视频等。备份好之后,发现各个设备上面的图片存放时并没有非常严谨的分类,并且有大量的重复照片,就想着做一个照片、视频管理系统放在Home NAS上面持续运行并提供相册服务。系统前端提供web访问接口,浏览器可以直接访问,后台生成一个简易相册库,以WEB页面的方式供各个终端查看和下载照片。 想到哪儿做到哪儿,并没有非常详尽的需求分析分析和软件设计。最终实现了如下功能:

  1. 实时监控和搜集指定目录的所有照片文件:jpg,png类型,所有视频文件:mp4。建立一张数据表,存储所有照片的路径、时间、指纹和长宽比等信息。
  2. 对1步骤生成的照片库根据照片的指纹值进行剔重,生成一张新的表,确保内容相同的照片只存一条记录。并且所有记录按照媒体文件的拍摄时间顺序排列。
  3. 提供RESTful的接口供浏览器访问和获取相册。提供分年、月、日的视图。在前端呈现上面直接使用Java生成web页面,没有用一些高级的Marker组件。
  4. 监控文件系统中新建、修改和删除文件,并实时更新媒体库。
  5. 支持mp4视频文件的呈现。(需要在本机支持ffmpeg和ffprobe命令,下载ffmpeg工具:ffmpeg.org,如果是Windows系统,则需要把exe文件直接放入C:\Windows目录下;Linux系统可以直接使用发行版的软件仓库安装该软件。)
  6. 新增后台同步照片到Huawei Cloud OBS、Amazon S3对象存储上面,Huawei Cloud OBS支持直接上传冷对象,可以节省约3/4的开支,Amazon S3则需要配置后台任务定期转换对象到冷存储,也可以达到节省开支的效果。按照当前的费率,备份30GB的多媒体数据,每个月的开销大约在¥1多。
  7. 使用Face++服务实现人像识别,并按照人像对照片进行归集。开启该功能需要根据Face++的提示获取访问API的密钥对。
  8. 安全方面:基于Cookies机制实现简易认证,可防止搜索引擎抓取私人照片;支持HTTPS访问(需要自行制作JKS格式的证书库并替代默认证书库)。
  9. jAlbum服务端支持运行在目前各个主流的操作系统:MS Windows、MAC OS和Linux上面,免安装部署。服务端只监控指定目录的照片和视频文件,不会破坏系统上的任何数据。客户端方面,支持所有平台使用浏览器访问,相册页面自适应PC和移动端浏览器。仅仅针对Android手机,提供app程序,在登录相册主页后有下载。

软件架构图:

jAlbum 架构图

二、源码获取

源码托管在此GIT服务上面:jAlbumhttps://git.codefine.site:3000/Shentar/jAlbum) ,欢迎fork、提交issue和修改代码。

三、软件包下载

以下是适用于X86 Windows系统和Linux系统的软件包。0.3.1及之前的版本运行环境要求Java 1.8,JDK或者JRE都可以;0.3.2版本及其之后的版本仅支持JDK11环境。下载软件包后,解压缩,完成必须的配置即可运行。

版本 发布时间 更新说明 下载链接
0.3.3 27 Nov 2021 1、支持上报metrics到stastd-exporter。 下载
0.3.2 22 May 2021 1、升级JDK版本到JDK11;
2、升级Jetty版本;
3、支持HTTP2。
下载
0.3.1 24 Feb 2021 1、缩略图显示优化;
2、支持整合图片到单独目录;
3、支持本地自建的人脸识别服务。
下载
0.3.0 3 Mar 2018 1、支持使用Google Analytics跟踪访问记录;
2、解决若干已知bug。
 
0.2.9 25 Nov 2017 1、支持备份数据到Huawei Cloud OBS对象存储。  
0.2.8 18 Nov 2017 1、支持HTTPS访问;
2、解决响应中重复HTTP头域Date和Expire问题;
3、解决鉴权Bug。
 
0.2.7 19 Jul 2017 1、新增“风景”页;
2、使用Maven管理项目;
3、其他问题解决。
 
0.2.6 19 May 2017 添加访问权限控制,相册放在外网访问时,发放token才能访问,避免照片被陌生人访问,如:搜索引擎抓取照片。  
0.2.5 7 May 2017 性能提升。  
0.2.4 3 Apr 2017 1、可靠性功能问题解决。
2、性能提升。
 
0.2.3 17 Mar 2017 增加人像识别和按照任务归集照片功能。  
0.2.2 29 Jan 2017 1、增加后台同步照片到AmazonS3服务端实现。
2、修改若干重复文件检测bug。
 
0.2.1 8 Jan 2017 解决问题:Chrome浏览器Ranges下载时第一个Range时不按照协议实现收取所有数据,最终在页面有多个Video时会导致浏览器挂死。单页面多个Video时,提取视频文件的缩略图呈现。  
0.2.0 6 Nov 2016 1、新增Video的支持,支持对MP4视频文件呈现;
2、修正稳定性和功能细节的bug。
 
0.1.9 14 Aug 2016 1、PC端浏览器,增加键盘翻页,左方向键翻上一页,右方向键翻下一页。
2、改进“照片发现”性能,最快在20秒内新增照片可以呈现到页面上。
3、其他bug解决。
 
0.1.8 5 Aug 2016 1、优化照片隐藏逻辑,当隐藏的照片被移动或者删除后又添加时,也不会被显示出来。
2、适配移动终端浏览器,实现触控滑动照片翻页。
 
0.1.7 31 Jul 2016 自动识别图片的旋转角度,在前端呈现时自动适应浏览器并旋转到正确的方向。  
0.1.6 24 Jul 2016 修正若干bug。使用按钮代替超链接来导航相册。  
0.1.5 21 Jul 2016 1、增加前端照片旋转功能。
2、完善照片删除功能。
3、解决稳定性bug。
 
0.1.4 18 Jul 2016 新增删除照片功能。在单张照片显示的页面上面可以点击删除链接“删除”该照片,该照片之后不会再显示,当然照片还存在于磁盘中,只是不再显示。  
0.1.3 10 Jul 2016 1、增加文件系统监控,利用文件系统的notify机制及时处理新的文件变更;
2、不再定时全盘扫描,只在启动时进行全盘扫描;
3、定时根据base表的变更情况刷新辅助表及时呈现新增照片。
 
0.1.1 2 Jul 2016 1、支持缩略图;
2、优化编译脚本;
3、增加配置文件。
 
0.1.0 23 Jun 2016 first release.  

四、安装运行

4.1 源码安装

Git仓库下载最新的版本的代码包,执行如下命令编译安装,注意需要使用JDK 11版本,其他版本未适配,不保证编译和启动成功 ^_^

cd jAlbum 
mvn install
cd distribute
sh jalbum.sh start

如果是Windows系统则运行start.bat批处理文件启动,启动成功界面为:

启动界面

4.2 直接下载Release包运行

直接下载编译好的软件包,参考软件包下载

4.3 访问

服务端默认监听2148(http)和5443(https)端口,使用浏览器访问即可,如在本机访问,直接使用http://127.0.0.1:2148即可访问。针对android系统,在相册主页有apk可以下载安装,在设置界面指定服务端地址也可访问。

五、界面截图

最新版本主页截图:

Homepage

视频合集页面截图:

video

根据人像识别结果进行照片归集页面截图:

faces_thumb

六、升级

停止运行jAlbum,将新版本的软件包中根目录下的jalbum.xml、log4j.xml、keystore和dedup.db文件删除,然后将剩下的所有文件和目录覆盖到原运行目录。重新启动jAlbum即可。

七、配置

7.1 文件类型

7.1.1 照片

当前支持的照片文件类型有:

<picfilesuffix> 
<suffix>jpg</suffix>
<suffix>jpeg</suffix>
<suffix>png</suffix>
</picfilesuffix>

将上述代码添加到jalbum.xml的config标签内即可。

7.1.2 视频

当前仅支持mp4文件的分析和呈现,并且需要先安装ffmpeg工具。在ffmpeg官方站点下载当前操作系统的工具,将ffprobe和ffmpeg可执行文件置于系统PATH变量所指向的路径下,如:C:\Windows目录下。jAlbum运行中会调用该工具分析MP4视频文件。 另外,在jalbum.xml内,picfilesuffix标签内增加如下内容:

<suffix>mp4</suffix>

7.2 文件大小

<minfilesize>51200</minfilesize>
<maxfilesize>512000000</maxfilesize>

此配置用于定制最小文件和最大文件大小。

7.3 指定目录

指定jAlbum监控的目录:

<inputdir> 
<dir>D:\\</dir>
<dir>C:\\</dir>
</inputdir>

可以配置多个目录。注意Windows系统下,需要使用双斜杠来作为目录分隔符。 指定jAlbum排除某些特定目录,对于某些系统目录或者出于隐私保护而不希望呈现的目录,可以使用此配置排除监控:

<excludedir> 
<dir>C:\\windows\\</dir>
<dir>C:\\Program Files\\</dir>
<dir>./</dir>
</excludedir>

指定缩略图存放目录:

<thumbnaildir>./thumbnail</thumbnaildir>

thumbnaildir标签用于指定缩略图文件存放的目录。

7.4 界面定制

maxpicsperonepage标签用于定制单个页面中显示的媒体文件的数量。

7.5 性能调优

threadcount标签用于定制任务并发数量。可以根据当前系统的CPU性能定制该数值。 hashalog用于定制计算照片文件和视频文件的HASH算法,常用的有MD5, SHA-256, SHA-1,一般而言HASH算法强度越高计算要求也越高,对于普通家用照片剔重,MD5比较合适。

7.6 人脸识别

首先需要到旷视科技申请API Key,然后在jalbum.xml中配置如下标签:

<Facer> 
 <ak></ak> 
 <sk></sk> 
 <facesetprefix></facesetprefix> 
 <maxfacescount></maxfacescount> 
</Facer>

其中ak填写为API Key,sk填写为API Secret。facesetprefix为face set的前缀,当有多个应用使用同一个账号时,可以使用此前缀做区分。maxfacescount为相册人像主页上呈现的人物的个数。

7.7 数据备份

jalbum支持将数据备份到华为云对象存储和亚马逊的S3对象存储。当备份到华为云时,默认使用归档存储级别。两种备份目的端的使用是完全相同的。

<s3> 
<bucketname></bucketname>
<ak></ak>
<sk></sk>
<useHttps></useHttps>
</s3>

<HuaweiOBS>
<bucketname></bucketname>
<ak></ak>
<sk></sk>
<useHttps></useHttps>
</HuaweiOBS>

其中,bucketname指定用于备份的容器,ak、sk分别为对象存储服务提供的访问凭据,需要到相应的对象存储服务上申请。useHttps指定是否使用https协议上传数据,为提高性能,如数据安全性要求不高,可以直接使用http协议传输。

7.8 访问记录

jalbum本身支持access日志,有log4j.xml配置。可以自行根据需要修改log4j.xml定制日志格式和存放目录。 另外,当相册在互联网上面开放访问时,可以配置Goolge Analytics,实现对访问进行统计。只需要将Goolge Analytics提供的ID写入如下配置:

<GoogleAnalyticsID></GoogleAnalyticsID>

如果配置为空,则不启用统计。

7.9 权限控制

当jalbum开放到互联网访问时,为了避免搜索引擎以及其它爬虫工具抓取照片,系统默认开启了需要输入Token方式来访问。 当不需要此权限控制时,可关闭Token访问,配置如下标签:

<accessAuth>true</accessAuth>

八、后台管理

8.1 权限管理

在开启权限控制时,相册提供后台页面和管理员登录方式来管理Token,启动后台备份和立即刷新数据等操作。

在本地登录时,可以管理Token,使用浏览器或者curl -X GET ${url}命令访问如下地址:

  • 生成和获取当前系统的Token:http://127.0.0.1:2148/getToken
  • 清除当前所有Token,并重新生成一批新的Token:http://127.0.0.1:2148/clearToken
  • 清除指定Token,并重新生成新的Token,其中${token}替换成需要删除的Token:http://127.0.0.1:2148/removeToken?token=${token}

为安全起见,当前jAlbum本身只监听127.0.0.1上的http端口,如果需要外网访问,需要自行添加Nginx反向代理,推荐如下配置:

server
{
listen 5443 ssl http2;
server_name yourdomainname.com;

ssl_certificate /path/of/your/server/cert;
ssl_certificate_key /path/of/your/private/key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

location / {
proxy_pass http://127.0.0.1:2148/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr; # it is important to add this header.
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
}

location ~ /\. {
deny all;
}

access_log on;
}

8.2 数据管理

当使用管理员Token登录,或者在本地登录时:

  • 系统在单独的照片页面会显示“隐藏”按钮,用于隐藏不需要显示的照片,被隐藏的照片不会备份到对象存储系统,隐藏的照片永久不再显示,但照片文件仍然存在本地系统盘上面。
  • 当系统的数据与磁盘出现不同步到问题时,可以使用如下接口立即是同步硬盘数据与系统记录的数据: http://127.0.0.1:2148/flushnow
  • 是否备份媒体文件到远端,需要访问如下地址触发,默认情况下,新增照片不会备份到远端。 http://127.0.0.1:2148/syncnow
| 1 分2 分3 分4 分5 分 (5.00- 20票) Loading ... Loading ... | 归档目录:Java, Jetty, WEB网络, 数据库, 软件技术 | 同时打有标签:, , , , , , |

Redhat 1.75亿美元收购Inktank(Ceph提供商)

redhat

美国东部时间4月30号,早上8:00,来自redhat官网上的消息,redhat以1.75亿美元收购inktank公司,inktank的主要产品是软件定义存储ceph解决方案。ceph本身是开源,基于一个统一的对象存储系统,同时对外提供块、文件和对象接口,其中对象接口兼容Swift和Amazon S3。对象接口和文件接口的数据是拉通访问的,即,用对象接口存储的数据,可以直接用共享文件系统访问。这是因为ceph的文件接口本身是建立在对象存储之上的。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.45- 11票) Loading ... Loading ... | 归档目录:云计算/云存储, 存储业界, 存储技术 | 同时打有标签:, , , |
返回顶部