文章目录

  • 一、为什么使用缩略图
  • 二、缩略图原理
  • 三、JAVA缩略图
    • 1. 开源类库 Thumbnailator
    • 2. GraphicsMagick+im4java图片处理
  • 四、C实现缩略图
    • 1. GraphicsMagick
    • 2. windows 下安装GraphicsMagick
    • 3. linux 下编译安装 GraphicsMagick
    • 4. graphicsmagick常用命令
      • 1)显示图像文件详细信息
      • 2) 格式转换
      • 3) 调整图像dpi和大小
      • 4) 在图像上添加文字
      • 5) 从gif文件中抽取第一帧
      • 6)建立gif图像
  • 五、ImageMagick还是GraphicsMagick?
  • 六、参考

一、为什么使用缩略图

  • 加快页面显示速度,
    比如一个页面上要显示10个图片,如果都用3000像素级别的原图的话(在CSS里设置图片显示为00*100,其实还是会加载原图然后缩略的),一个页面的大小和显示速度可想而知。

  • 为了布局
    比如为了布局需要,页面上需要显示的都是150100(比例3:2)的图,而你的原图是600800(比例3:4),直接通过CSS压缩图片的话图片肯定变形严重,所以生成缩略图截取符合比例的缩略部分就美观多了.

总结:其最核心的需求,就是提升加载性能。

二、缩略图原理

一般的话采取缩点,就是按比例从原始图像中的位置上等距抽取一些像素生成新图。但不同的库具体算法有所不同。

三、JAVA缩略图

使用JDK自带的方法处理图片非常的不方便,目前处理图片主流的有两种,第一种依赖环境需要安装imageMagick和GraphicsMagick,第二种是使用Google开源的Thumbnailator这个使用起来简单点,不过相对来说Thumbnailator在处理图片的时候还原度没有第一种的好,不过能满足绝大多数的情况。

1. 开源类库 Thumbnailator

Thumbnailator 是一个优秀的图片处理开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成处理后的图片,且允许微调图片的生成方式,同时保持了需要写入的最低限度的代码量。还支持对一个目录的所有图片进行批量处理操作。

支持的处理操作:图片缩放,区域裁剪,水印,旋转,保持比例。

2. GraphicsMagick+im4java图片处理

[推荐]GraphicsMagick+im4java图片处理
参考URL: https://www.cnblogs.com/xieegai/p/8438918.html
利用 imagemagic 对图片进行处理,java工程中,使用im4java来操作imagemagic的api
参考URL: https://cloud.tencent.com/developer/article/1038086

im4java只是封装ImageMagick的命令。所以不需要依赖dll,也不存在64位系统调用32位dll的问题.而且im4java支持GraphicsMagick,GraphicsMagick是ImageMagick的分支。相对ImageMagick ,GraphicsMagick更稳定,消耗资源更少。最重要的是不依赖dll环境
所以使用 im4java 是更好的选择。

下载 im4java

downlaod 地址:http://sourceforge.net/projects/im4java/?source=directory

im4java的思路是通过线程或者进程执行graphicsmagick的命令,它的api只是为了能生成命令,而不是调用graphicsmagick的库。

IM4JAVA是同时支持ImageMagick和GraphicsMagick的,这里是bool值,如果为true则使用GM,如果为false支持IM。

四、C实现缩略图

1. GraphicsMagick

官网:http://www.graphicsmagick.org/

GraphicsMagick最初源于ImageMagick5.5.2(2002年11月),但从那时起就完全独立于ImageMagick项目。自从ImageMagick的fork以来,许多作者使用开放的开发模型进行了许多改进(参见新闻),但没有破坏API或实用程序操作。

GraphicsMagick提供了一系列实用程序、编程接口和gui,以支持文件格式转换、图像处理和2D矢量渲染。

GraphicsMagick最初基于ImageMagick Studio的ImageMagick(最初由杜邦的John Cristy编写)。GraphicsMagick的目标是提供尽可能高质量的产品,同时鼓励所有感兴趣的开发人员开放和积极参与。GraphicsMagick使用许可证旨在允许它用于任何应用程序,包括专有或GPLed应用程序。有关GraphicsMagick许可证,请参阅文件Copyright.txt。

总结: GraphicsMagick 号称图像处理领域的瑞士军刀。 可以看作改良版的ImageMagick。GraphicsMagick 功能强大。

2. windows 下安装GraphicsMagick

官网下载http://www.graphicsmagick.org/

双击GraphicsMagick-1.3.33-Q16-win64-dll.exe

快捷键win+r -》输入打开运行cmd,并输入‘gm’即表示安装成功

3. linux 下编译安装 GraphicsMagick

CentOS安装GraphicsMagick
参考URL: https://www.centos.bz/2019/02/centos%E5%AE%89%E8%A3%85graphicsmagick/
参考官网安装Installing GraphicsMagick
参考URL: http://www.graphicsmagick.org/README.html

  1. 源码下载:搜索GraphicsMagick官方网站,进入下载页。
    http://www.graphicsmagick.org/download.html
wget https://nchc.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.33/GraphicsMagick-1.3.33.tar.gz
  1. 安装依赖
    安装编译环境
yum install -y gcc gcc-c++ make cmake autoconf automake

依赖:libpng和libjpeg等图片开发包的安装, 这些yum之前有装,建议先yum remove,再yum install

yum install -y libjpeg-devel libjpeg
yum install -y libpng-devel libpng
yum install -y giflib-devel giflib
  1. 编译安装GM
#安装GraphicsMagick
tar -zxvf GraphicsMagick-1.3.33.tar.gz
cd GraphicsMagick-1.3.33
./configure --prefix=/usr/local/GraphicsMagick

在执行完上述命令后会有一段输出,可以查看GraphicsMagick支持的图片格式,在Configured value下为yes的表示为支持,PNG、JPEG v1和ZLIB必须为yes

注意: 前面安装了yum正确安装png、jpeg依赖,这里显示就会为yes,否则为no。

编译安装make && make install
  1. 设置环境变量
    vim /etc/profile.d/gmagick.sh
export GMAGICK_HOME="/usr/local/GraphicsMagick"
export PATH="$GMAGICK_HOME/bin:$PATH"
LD_LIBRARY_PATH=$GMAGICK_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

生效配置

source /etc/profile.d/gmagick.sh
  1. 验证是否成功安装
gm version

使用命令查看GraphicsMagick所支持的图片格式:

# gm convert -list formats
如果列表中如果显示PNG、JPEG、GIF等则表示已支持图片转换

4. graphicsmagick常用命令

GraphicsMagick 1.3.23 常用命令
参考URL: https://blog.csdn.net/revitalizing/article/details/52281828
graphicsmagick常用命令
参考URL: https://www.cnblogs.com/yesyes/p/6921130.html
官网命令参考: http://www.graphicsmagick.org/utilities.html

1)显示图像文件详细信息

[root@localhost ~]# gm identify a.jpg
a.jpg JPEG 601x601+0+0 DirectClass 8-bit 11.8Ki 0.000u 0m:0.000002s

识别图片(高级)

 gm identify -verbose a.jpg

结果:打印出很多信息。

2) 格式转换

gm convert a.jpg a.pdf(转换为pdf)

3) 调整图像dpi和大小

gm convert -density 288 -geometry 25% a.gif b.gif
(缩小为原先的1/4,并且dpi为288)

gm convert -resize 640x480 a.gif a_640_480.gif
(转换为640x480的图像)

4) 在图像上添加文字

gm convert -font Arial -fill blue -pointsize 18 -draw “text 10,10 ‘your text here’” a.jpg a_文字.png

5) 从gif文件中抽取第一帧

gm convert “Image.gif[0]” first.gif

6)建立gif图像

gm convert -delay 20 frame.gif animation.gif
gm convert -loop 50 frame.gif animation.gif
(让动画循环50次)
m convert -delay 20 frame1.gif -delay 10 frame2.gif -delay 5 frame3.gif animation.gif
(对每一帧手动指定延时)

五、ImageMagick还是GraphicsMagick?

ImageMagick还是GraphicsMagick?
参考URL: https://www.cnblogs.com/findumars/p/5597299.html
GD、ImageMagick、GraphicsMagick
参考URL: https://www.cnblogs.com/flyyu21/p/6379052.html

ImageMagick是目前最流行的图片处理工具,它的功能非常丰富;GraphicsMagick的功能略逊于 ImageMagick,但是它的效率更强悍,就好比Apache和Nginx一样,一个功能更强,一个效率更胜。据说Flickr原来就用ImageMagick,后来改成了GraphicsMagick。似乎就是因为效率更好些。淘宝用于图片resize和水印的工具不是imagemagick而是graphicsmagick。

官方描述:
与ImageMagick或其他流行软件相比,更喜欢GraphicsMagick的原因如下:

  1. GM比ImageMagick效率更高,因此它可以使用更少的资源更快地完成任务。
  2. GM比ImageMagick更小、更轻(安装小3-5倍)。
  3. GM被用于处理世界上最大的照片网站(如Flickr和Etsy)上的数十亿份文件。
  4. GM与其他已安装的软件不冲突。
  5. GM比ImageMagick遭受更少的安全问题和攻击。
  6. GM参与了谷歌的oss模糊项目(自2018年2月起)。
  7. GM valgrind的100% clean (memcheck和helgrind)。
  8. GM使用ASan通过了严格的内存错误测试。
  9. GM使用(UBSan)通过了未定义行为测试。
  10. GM有一个全面的手册页。
  11. GM提供了API和ABI稳定性以及可以依赖的托管版本(ImageMagick没有)。
  12. GM提供了详细但可理解的变更日志和新闻文件(ImageMagick没有)。
  13. GM是免费的,可以用来支持开放和专有的应用程序。
  14. GM是根据X11风格的许可证(MIT许可证)发布的,该许可证由开源计划批准,推荐osccc使用,并与GNU GPL兼容。
  15. GM源代码是在Mercurial中管理的,Mercurial是一个分布式的源代码管理工具,支持本地更改的管理。存储库的历史可以追溯到1998年。
  16. 2015年5月25日,根据Coverity分析,GM每1000行代码(包括293341行代码)有0.00(零)个缺陷。
  17. GM的开发人员贡献了其他免费公开项目。

GraphicsMagick的版权归GraphicsMagick组和许多其他组所有。

以下是GraphicsMagick可以做的几个例子:

  • 将图像从一种格式转换为另一种格式(如TIFF到JPEG)
  • 调整大小、旋转、锐化、减少颜色或向图像添加特殊效果。
  • 创建缩略图图像的蒙太奇
  • 创建适合在Web上使用的透明图像
  • 比较两个图像
  • 将一组图像转换为GIF动画序列
  • 通过组合多个单独的图像创建合成
  • 在图像上绘制形状或文本
  • 用边框装饰图像
  • 描述图像的格式和特征

结论: GraphicsMagick 相对比较强大,使用GraphicsMagick 。

六、参考

ImageMagick还是GraphicsMagick?
参考URL: https://www.cnblogs.com/findumars/p/5597299.html

缩略图-快速开始(GraphicsMagick )相关推荐

  1. Bilibili,B站视频缩略图快速预览实现再分析

    之前的这篇文章曾经有过一次分析 在B站视频搜索结果中,可以在不进入视频的状态下对视频快速预览.如果你对这方面有兴趣,可以和我们一群程序员交流学习,共同进步 695623459 今天详细分析和复现一下实 ...

  2. 【ABviewer从零开始教学查看器篇③】打开文件之缩略图菜单

    ABViewer是一款高质量.高效率.低成本的多功能设计及工程文档管理工具,能为您提供全面的专业的浏览及编辑功能,同时支持30多种光栅和矢量图形格式. 在小编看来,ABViewer是一款非常简单且实用 ...

  3. 【Windows】显示缩略图非图标/开启缩略图

    问题 科研实验产生了大量的实验结果图片,为了快速发现较好的实验结构,此时需要通过图像缩略图进行快速定位,然而,有些Windows相关错误的设置导致无法预览缩略图,如下所示: 方法 通过下面步骤可以实现 ...

  4. 文件打开不关闭程序会输出吗_干货!很多资深用户都不知道的10个BOOX阅读器使用技巧,很实用!...

    近期我们在公众号后台.知乎.贴吧等平台,都收到了很多用户的关于阅读器使用上的一些问题咨询,比如如何设置屏保.如何安装字体.如何自定义笔记模板.如何去除PDF水印等. 今天,我们挑了10个大家最常咨询的 ...

  5. PgwSlideshow-基于Jquery的图片轮播插件

    友情链接:http://www.htmleaf.com/Demo/201504031619.html  http://www.htmleaf.com/Demo/201504191708.html 0 ...

  6. antv图例出现分页_2020,贴地飞行的 AntV 设计

    前不久,一年一度的数据可视化产品 AntV 品牌发布日又来到,今年我们给大家带来了"贴地飞行"的 AntV 设计.为什么称之为"贴地飞行"?这一年中,AntV ...

  7. Mac OS使用技巧之九:Mission Control和DIY自己的Dashboard

    一.Mission Control使用技巧 Mac OS X为我们提供了更加无缝和流畅的多桌面.应用管理和切换,Mission Control.      之前的教程里面也提到过.触摸板四指向上平移( ...

  8. [译]5 Mac OS X RSS Readers Worth Giving a Shot

    5 Mac OS X RSS Readers Worth Giving a Shot Mac OS X 下5款值得关注的RSS 阅读工具 There was once a time when my f ...

  9. 照片损坏怎么办,怎么恢复受损照片

    常见的照片格式有JPG.JPEG.ARW.CR2.CR3.DNG.NRW.RAF .GPR.NEF等,日常生活中很多设备都可以拍摄照片,从相机.手机到平板都可以拍摄照片,其中相机拍摄出的照片多以RAW ...

  10. 对大数据量Excel文件自动排版、转换成PDF用于印刷出版

    excel排版大师 下载  http://pan.baidu.com/s/1eQnY0hW 2015.3. 目录 一.主要功能 2 二.系统需求 3 三.文件名要求 3 四.目录说明: 4 1.Exc ...

最新文章

  1. 面试题16: 数值的整数次方
  2. Spring常用注解总结
  3. mysql全局唯一id_Mysql实现全局唯一ID
  4. 『设计模式』设计模式--原型模式
  5. vue加载时闪现模板语法-处理方法
  6. C++输出字符变量地址
  7. PHP —— 识别运算符实现逻辑比较
  8. pagerTabStrip例子
  9. ccs软件5.5安装
  10. 微信小游戏开发指南(二)微信小游戏常见问题解答
  11. 开源音乐软件——落雪
  12. 俄亥俄州立大学计算机专业排名,俄亥俄州立大学计算机科学专业
  13. python日程表代码_【算法提高班】《我的日程安排表》系列
  14. PLSQL的快捷键以及使用技巧
  15. QLabel setText 标红 加粗
  16. 分支限界法与回溯法的横向比较
  17. mysql多次登录失败控制,Mysql登录失败多次锁定配置
  18. Google 文档 地址
  19. ZLIB 压缩的数据格式规范
  20. 校招 - 行业测评题、图形推理题、逻辑思维面试题,解题技巧汇总

热门文章

  1. 当软件定义存储(SDS)遇见区块链(BlockChain)
  2. git rebase
  3. jsp页面打开为空白页
  4. 京东商品详情数据接口(APP端,H5端),监控京东商品历史价格及价格走势,接口代码对接教程
  5. [ 笔记 ] 操作系统复习笔记
  6. 单片机入门(预备知识)-适合初学者
  7. Day 11 Contractions and Present Perfect
  8. 推荐系统实践(三)ICF和UCF
  9. 单招学计算机好学吗,单招没被录取学什么,计算机行业
  10. SSL 3.0 Poodle漏洞修复方法