Zimg—轻量级图片服务器搭建利器

2023-10-29

​​​​​​​

 

在一个互联网应用中,图片扮演着越来越重要的角色。有稳定的可扩展的图片存储服务器就显得尤为的重要,云厂商们提供了便利的图片存储服务,花钱就可以解决了。这里简单介绍一个开源的一个分布式图片存储服务器——zimg,来自己搭建一个图片服务器。

当然你也可以利用分布式文件存储系统在存储图片,比如FastDFS,不过针对图片的特有功能,比如缩放、截取、倾斜等,都需要自己特殊处理,而这正是图片服务器zimg所擅长的东西。

官网地址:http://zimg.buaa.us

服务器的安装、配置、使用手册等,官网都有详细的介绍,可以直接查看官网,很详尽,有问题也可以在github上提出issue,共同维护解决。

安装成功后,打开测试页面

上传图片后成功后页面

图片存储时,会生成图片对应的MD5值来作为寻址的唯一标识,图片重复存储时,在zimg中只会存储一份,从而有效减少相同图片的存储。但理论上有一个弊端,一个图片删除后,所有引用的地方都会清除掉。

下面罗列zimg可以提供的常见功能:

  1. 所有图片默认返回质量为75%,JPEG格式的压缩图片,这样肉眼无法识辨,但是体积减小

  2. 获取宽度为x,被等比例缩放的图片

  3. 获取旋转后的图片

  4. 获取指定区域固定大小的图片

  5. 获取特定尺寸的图片,由于与原图比例不同,尽可能展示最多的图片内容,缩放之后多余的部分需要裁掉

  6. 获取特定尺寸的图片,要展示图片所有内容,因此图片会被拉伸到新的比例而变形

  7. 获取特定尺寸的图片,但是不需要缩放,只用展示图片核心内容即可

  8. 获取按指定百分比缩放的图片

  9. 获取指定压缩比的图片

  10. 获取去除颜色的图片

  11. 获取指定格式的图片

  12. 获取图片信息

  13. 删除指定图片

而以上这些功能的提供,仅需要一个url+特定的参数,通过get方式就可以完成,这才是简便之处。

zimg提供三种存储方式:本地磁盘,beansdb,ssdb三种。单机存储,依据其目录结构设计,可以存储1024 * 1024 * 1024 * 200KB = 200TB(单图200KB大小)数据量,切换成beansdb或ssdb,后续可扩展成更大容量的存储完全不是问题。

扩展阅读:

我的微信
长按2秒,识别二维码,关注我,获取更多技术提升
​​​​​​

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zimg—轻量级图片服务器搭建利器 的相关文章

  • 为近期招聘.Net开发组长编写的面试题

    1 谈谈ASP Net中GridView控件和Repeater控件有什么异同 它们之间各有什么优势 2 请编程遍历页面上所有TextBox控件并给它赋值为空字符串 3 利用正则表达式编写一个邮箱验证函数 4 谈谈对C 关键字Volatile
  • Mac系统下搭建使用eclipse搭建web开发环境ATS阻止http发布的问题

    应课程要求 今天使用Mac搭建eclipse Tomcat mysql开发环境 在进行简单的jsp页面测试时出现如下情况 原因是苹果收紧对普通http的访问限制 需要关闭App Transport Security ATS 方法是在Info
  • web基础(二)---------列表、表格、表单

    目录 一 前言 二 正文 1 列表 1 无序列表 2 有序列表 3 自定义标签 2 表格 3 表单 1 input 根据type属性不同 展示不同效果 2 input 占位符 提示信息 3 表单域 划分提交 重置的作用域 form 4 普通
  • 开源项目-CRM客户关系管理系统

    哈喽 大家好 今天给大家带来一个开源系统 CRM客户关系管理系统 主要功能包括客户管理 客户流失 销售机会 客户关怀等模块 系统开发环境以及版本 操作系统 Windows 7 集成开发工具 Eclipse EE 4 7 编译环境 JDK 1
  • 开源的13个Spring Boot 优秀学习项目!超53K星,一网打尽!

    往期热门文章 1 往期精选优秀博文都在这里了 2 22款终端生产力工具 效率飞起 3 又一P1故障 锅比脸圆 4 Mybatis接口Mapper内的方法为啥不能重载 5 delete后加 limit是个好习惯么 Spring Boot 算是
  • 百度地图JavaScript API开发GIS服务

    百度地图JavaScript API是由JavaScript语言编写的应用程序接口 支持HTTP和HTTPS 免费对外开放 在使用前 需先申请密钥 ak 才可使用 主要分为两种类型的版本 JavaScript API GL 使用了WebGL
  • Unable to load configuration的解决方法

    最近在学Struts2 5 5 因为喜欢用最新的 并且之前没有学习过的经验 就按照一个网上的博客跟着做一个小实例 里面说直接用 Struts2 5 5中自带例子的struts xml文件 结果我就用了 然后写了一个小程序就一直报 Unabl
  • H5的本地存储(localStorage)和会话(sessionStorage)还有cookie的使用与注意事项

    目录 本地存储使用的时候注意 js代码如下 cookie使用的时候注意 open in browser与open with live server的区别 最后是总代码如下 本地存储使用的时候注意 js代码如下 本地存储的使用 localSt
  • Vue3 详细教程

    文章目录 一 API 风格 1 1 选项式 API 1 2 组合式 API 二 Vue 指令 2 1 文本插值 2 2 v html 标签元素 2 3 v on 绑定事件 2 4 v show 隐藏元素 2 5 v if 消除元素 2 6
  • HTMl中的各种标签(常见)

    HTML的元素以开始标签开始 结束标签结束 被它们包起来 且一半可以嵌套 分类 html的标签主要分为双标签和单标签 双标签
  • JeeSite数据权限控制解决方案

    支持如下数据范围设置 所有数据 所在公司及以下数据 所在公司数据 所在部门及以下数据 所在部门数据 仅本人数据 按明细设置 特殊情况下 跨机构授权 User user UserUtils getUser 使用标准查询 DetachedCri
  • pageHelper分页失效解决方案

    前言 pageHelper是一款优秀的Mybatis分页插件 在项目中可以非常便利的使用 使开发效率得到很大的提升 但不支持一对多结果映射的分页查询 所以在平时的使用时 对于一对多分页会出现分页错误 这篇文章主要对pageHelper分页错
  • 谷歌开源项目Chromium的源码获取与项目构建(Win7+vs10/vs13)

    从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用win7 vs2010 相对来说也比较简单 按照步骤来也很快能编译出来 1 官网的编译配置介绍 http www chromium org developers
  • 两款免费、好用的数据库连接工具

    一 Navicate Navicat是一套快速 可靠的数据库管理工具 专为简化数据库的管理及降低系统管理成本而设 它的设计符合数据库管理员 开发人员及中小企业的需要 Navicat 是以直觉化的图形用户界面而建的 让你可以以安全并且简单的方
  • Nginx中的正则匹配表达式操作符“~”和“~*“的含义

    操作符表示区分大小写的匹配 操作符表示不区分大小写的匹配 更多Nginx中正则表达式操作符的知识 请参考下面这个链接 https www cnblogs com bethal p 5514557 html
  • Bootstrap3 多个模态对话框无法显示的问题

    今天帮同事调了一个代码 他们的项目最近在用Bootstrap做开发 突然间 他遇到了一个奇怪的问题 如果一个页面中 有多个Modal对话框的话 排列在第一个的对话框 能够正确显示 第二个 只能导致页面出现MASK层 却不能显示Dialog
  • 表单提交Post方法、Get方法背后的秘密

    表单大家都很熟悉 上网的时候经常会遇到表单 表单用来接受用户的输入 并将用户的输入以 name value值对 集合的形式提交到服务器进行处理 那么表单是怎样将数据提交到服务器的 服务器是怎样对表单数据进行处理的 下面我将为大家揭开表单提交
  • 2021前端开发面试题:面试中该如何与HR谈薪资?

    问题 面试中该如何与HR谈薪资 解析 HR与你谈论薪资经常有如下套路 HR 您期望的薪资是多少 你 25K OK 你已经被HR成功套路 这个时候你的最高价就是25K了 然后HR会顺着这个价往下砍 所以你最终的薪资 般都会低于25K 等你接到
  • go语言教程哪里有?go 语言优秀开源项目汇总

    目录 监控系统 容器技术 PaaS工具 大数据 微服务 CI CD 数据库技术 存储技术 分布式系统 消息系统 服务器管理 安全工具 网络工具 Web工具 Web框架 区块链技术 其它 监控系统 项目 简介 OpenFalcon OpenF
  • zimg服务器搭建手记

    zimg是由国人开源的一个高性能的图片服务器 相关介绍和代码可从github上获取 https github com buaazp zimg 1 安装Openssl 这个很关键 必须先安装 wget http www openssl org

随机推荐

  • tp5伪静态设置

    nginx伪静态 location if e request filename rewrite index php s 1 last break apache伪静态
  • 如何压缩图片大小?图片太大这样压缩

    过大的图片文件不仅会占用大量的存储空间 还会影响图片传输和处理效率 为了解决这个问题 下面给大家分享几个图片压缩的方法 帮助你轻松解决图片过大带来的困扰 一 使用嗨格式压缩大师 这是一款专业的图片压缩工具 采用先进的压缩算法 能够在保证图片
  • 手把手教你用 Keras 实现 LSTM 预测英语单词发音

    1 动机 我近期在研究一个 NLP 项目 根据项目的要求 需要能够通过设计算法和模型处理单词的音节 Syllables 并对那些没有在词典中出现的单词找到其在词典中对应的押韵词 注 这类单词类似一些少见的专有名词或者通过组合产生的新词 比如
  • Postman导出接口

    导出的文件
  • Enterprise Architect(EA)画UML之用例图,敲详细讲解+实战举例

    目录 具体步骤 前提准备 实战画用例图 实战加一 绘制 机票预订系统 用例图 补充 补充一 如何调整整体字体 补充二 如何修改边框字体 补充三 在关闭Enterprise Architect之后如何打开 在 UML面向对象分析 建模与设计
  • ReactNative 学习笔记

    学习使用的开发工具 编译器 VSCode 开发语言工具 TypeScript 重要程度分类 一般 这个程度的知识点主要是达到熟练掌握即可 不用太深入研究和学习 重要 这个程度的知识点主要是达到熟练掌握 并且内部的原理切要熟记 因为会关联到其
  • 【大数问题】字符串相减(大数相减)<模拟>

    类似 力扣 415 字符串相加 大数相加 实现大数相减 题解 模拟相减的过程 先一直使大数减小数 记录借位 最后再判断是否加负号 中间需要删除前导0 例如10001 10000 00001 import java util public c
  • java byte格式_Java——详解java中的byte类型

    Java也提供了一个byte数据类型 并且是基本类型 java byte是做为最小的数字来处理的 因此它的值域被定义为 128 127 也就是signed byte 下面这篇文章主要给大家介绍了关于java中byte类型的相关资料 需要的朋
  • 基于粒子群算法(PSO)优化径向基神经网络(PSO-RBF)的数据回归预测,多变量输入模型。matlab代码,优化参数为扩散速度,采用交叉验证。评价指标包括:R2、MAE、MSE、RMSE和M

    clc clear all close all tic warning off 导入数据 训练集 190个样本 P train xlsread data training set B2 G191 T train xlsread data t
  • 解决Antd Tree组件,二次点击时不取消选中,保持高亮

    一 问题概述 ant design 提供的 Tree树组件 支持点击高亮树节点 再次点击取消高亮 默认效果如下 然而大多数业务场景下 我们希望多次点击同一个节点不会取消他的选中效果 二 解决方案 监听onSelect时间 并使用select
  • BUG解决Button类不能从UnityEngine.UI中引用

    Button does not contain a definition for onClick and no accessible extension method onClick accepting a first argument o
  • mysql 分表插入,mysql实现插入数据到分表

    创建原始数据表 DROP TABLE IF EXISTS articleinfo CREATE TABLE articleinfo id BIGINT UNSIGNED NOT NULL AUTO INCREMENT PRIMARY KEY
  • suse11/12下关闭防火墙

    service SuSEfirewall2 init stop chkconfig SuSEfirewall2 init off 启动操作为 service SuSEfirewall2 setup start service SuSEfir
  • 通过java解析域名获得IP地址

    IP地址是Internet主机的作为路由寻址用的数字型标识 人不容易记忆 因而产生了域名 domain name 这一种字符型标识 DNS即为域名解析服务 在这里我们如果想通过java程序来解析域名获得真实IP的话 可以通过java的Ine
  • C语言指针高级篇

    相信很多人都听过指针是c语言的灵魂 对于指针的学习 往往也是最难的 也是最难搞懂的 那么今天我们一起来学习分析c语言的指针 体会c语言的魅力 指针和指针应用大概分为一下几类 1 字符指针 2 数组指针 3 指针数组 4 数组传参和指针传参
  • Node.js笔记-day04

    18 Node js 回调函数 Node js 异步编程的直接体现就是回调 异步编程依托于回调来实现 但不能说使用了回调后程序就异步化了 回调函数在完成任务后就会被调用 Node 使用了大量的回调函数 Node 所有 API 都支持回调函数
  • Linux关于文件或者目录的常见命令

    1 查看当前所在目录 print working directory 该命令的基本格式为 root localhost pwd 2 查看指定目录下所有的子目录或者文件列表 list 该命令的基本格式为 root localhost ls 选
  • Axios(万字详细教程)

    Axios介绍 1 Axios是什么 Axios是一个基于promise的HTTP库 类似于jQuery的ajax 用于http请求 可以应用于浏览器端和node js 既可以用于客户端 也可以用于node js编写的服务端 2 Axios
  • idea项目无法打包

    打包过程 点击maven 点击lifecycle后点击package 运行后出现 打包出错 原因是plugins标签里面缺少maven resources plugin依赖 需要在pom xml里面添加依赖
  • Zimg—轻量级图片服务器搭建利器

    在一个互联网应用中 图片扮演着越来越重要的角色 有稳定的可扩展的图片存储服务器就显得尤为的重要 云厂商们提供了便利的图片存储服务 花钱就可以解决了 这里简单介绍一个开源的一个分布式图片存储服务器 zimg 来自己搭建一个图片服务器 当然你也