一,平均颜色的用途:

很多app在流式的展示图片时,

在图片没加载出来之前,

不是使用统一的背景图,

而是先显示一个纯色的背景,

而背景色和图片的颜色非常接近,

这样给用户的体验会更好。

我们这里演示的就是获取这个平均颜色值

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,查看identify的版本和帮助

1,查看版本

[root@blog im5]# identify -version
Version: ImageMagick 6.9.10-86 Q16 x86_64 2020-01-13 https://imagemagick.org
Copyright: 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5)
Delegates (built-in): bzlib cairo fftw fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms ltdl lzma
openexr pangocairo png ps raqm raw rsvg tiff webp wmf x xml zlib

2,查看帮助

[root@blog im5]# identify -help

3,查看手册

[root@blog im5]# man identify

三,identify得到平均颜色值的例子:

使用identify得到图片的平均颜色值

[root@blog im5]# identify -verbose 5.jpg
Image: 5.jpg
...
Channel statistics:
Pixels: 465018
Red:
min: 0 (0)
max: 255 (1)
mean: 173.125 (0.678923)
standard deviation: 95.3528 (0.373932)
kurtosis: -0.995196
skewness: -0.895732
entropy: 0.858608
Green:
min: 0 (0)
max: 255 (1)
mean: 98.2824 (0.385421)
standard deviation: 56.5396 (0.221724)
kurtosis: 0.427876
skewness: 0.923531
entropy: 0.947875
Blue:
min: 0 (0)
max: 255 (1)
mean: 124.452 (0.488046)
standard deviation: 57.3031 (0.224718)
kurtosis: -0.463398
skewness: 0.318713
entropy: 0.967108
Image statistics:
Overall:
min: 0 (0)
max: 255 (1)
mean: 131.953 (0.517463)
standard deviation: 69.7318 (0.273458)
kurtosis: -1.27908
skewness: 0.143493
entropy: 0.92453
Rendering intent: Perceptual
...
Version: ImageMagick 6.9.10-86 Q16 x86_64 2020-01-13 https://imagemagick.org 

说明:Channel statistics: 下面的

Red:的mean值

Green:的mean值

Blue:的mean值

就是我们需要的三个值

我们用shell把这个三个值取出来:

[root@blog im5]$ identify -verbose 5.jpg | grep mean | head -3 | awk '{match($0," ");print $2}' | awk '{printf("%.0f\n",$1)}'
173
98
124

三个值分别是r/g/b 三种颜色

也可以横向打印出来

[root@blog im5]$  identify -verbose 5.jpg | grep mean | head -3 | awk '{match($0," ");print $2}' | awk '{printf("%.0f,",$1)}' | head -c-1

173,98,124

四,identify的其他例子:

得到图片的宽高

[root@blog im5]$ identify -format %wx%h 5.jpg
799x582

-format可打印的变量:

     %b   file size
%c comment
%d directory
%e filename extension
%f filename
%h height
%i input filename
%k number of unique colors
%l label
%m magick
%n number of scenes
%o output filename
%p page number
%q quantum depth
%s scene number
%t top of filename
%u unique temporary filename
%w width
%x x resolution
%y y resolution
%# signature
\n newline

附:format的官方文档地址:

https://www.imagemagick.org/script/escape.php

五,使用缩放图片的方法得到图片的平均颜色值

#-resize: 调整文件大小,这里是把文件转为1个像素大小

#!:表示不管原图片比例,强制缩放后的图片大小是1×1

#format:指定输出的信息,这里的r/g/b是三原色的值

#info -: Specify 'file' as '-' for standard input or output.

#不指定文件而是使用-,用来指定标准输入或标准输出

[root@blog im5]$ convert 5.jpg -resize 1x1! -format "%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]" info:-
173,98,125

这个计算和identify得到的结果基本一致

六,取平均颜色值的效果展示

1,原图:

得到平均颜色值:

[root@blog im5]$  identify -verbose 5.jpg | grep mean | head -3 | awk '{match($0," ");print $2}' | awk '{printf("%.0f,",$1)}' | head -c-1
173,98,124

效果:

2,原图

得到平均颜色值:

[root@blog im4]$  identify -verbose blue.jpg | grep mean | head -3 | awk '{match($0," ");print $2}' | awk '{printf("%.0f,",$1)}' | head -c-1
55,128,225

效果:

3,原图:

得到平均色值:

[root@blog im5]$  identify -verbose 4.jpg | grep mean | head -3 | awk '{match($0," ");print $2}' | awk '{printf("%.0f,",$1)}' | head -c-1
26,75,22

效果:

ImageMagick:用identify得到图片的平均颜色(基本颜色/主色调)的更多相关文章

  1. ImageMagick:用identify检查图片是否完整?(jpg/gif/png图片是否损坏)

    一,常用图片格式的结束标志是什么? 1,Jpg格式的文件在16进制中的表示是以 ff d9 两个字节结尾 2,  gif格式的文件,结尾是 3b 3,  png格式的文件,结尾是  00 00 00 ...

  2. codeblocks修改字体颜色-背景颜色

    常用: 1. 编辑器背景-豆沙绿配置:色调85,饱和度123,亮度205: 2. 注释颜色-紫色:rgb(255,0,255): 参考: 改变codeblocks里面各种注释的颜色 常用颜色的RGB值 ...

  3. 框架、颜色、颜色名、脚本、字符实体、URL、速查列表

    一. 1.<iframe></iframe>标签设置内联框架(一个内联框架用来当前HTML文档嵌入另一个文档).[语法:<iframe src="URL&quo ...

  4. 2018-9-30-C#-winforms-输入颜色转换颜色名

    title author date CreateTime categories C# winforms 输入颜色转换颜色名 lindexi 2018-09-30 18:27:49 +0800 2018 ...

  5. echo -e "\033[字背景颜色;字体颜色m字符串\033[0m

    格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033 ...

  6. 转: ImageMagick 命令行的图片处理工具(客户端与服务器均可用)

    http://www.imagemagick.com.cn/ 关于ImageMagick ImageMagick (TM) 是一个免费的创建.编辑.合成图片的软件.它可以读取.转换.写入多种格式的图片 ...

  7. ImageMagick利用蒙版合成图片

    先看合成后的效果图. 需要的图片素材: 1.一张图片(335x600) 2.一张蒙版图片(335x600) 3.一张相框图片(335x600) 第一步,根据蒙板和图片,截取图片.而且所截取的图片之外的 ...

  8. jpg、png格式的图片转换成webp后颜色失真的问题

    今天简单的试用了一下 cweb.exe 将 jpg, png 格式的图片转换成 webp 格式. 我今天下载的是当前最新版:1.0.0 cwebp 3.jpg  -q 85 -o 3.webp 发现图 ...

  9. CentOS系统php5.6安装ImageMagick处理webp格式图片

    1.先安装webp yum install libwebp 2.编译安装ImageMagick 之前有过yum安装的先卸载 yum remove ImageMagick 我使用的是老版本ImageMa ...

随机推荐

  1. 福利来了~Linux一键部署包,环境安装不用愁!!!

    前言 昨天一哥们的弟弟突然问我有没有部署过的Linux,公司连个运维都没有,服务器都要后端部署.... 你有没有相似的遭遇呢?公司规模小,后端即是运维,一份工资干两份活,哈哈~ 为了解决这老弟的困惑, ...

  2. Mysql数据分片技术(一)——初识表分区

    1. 为什么需要数据分片技术 2. 3种数据分片方式简述 3. 分片技术原理概述 4. 对单表分区的时机 1为什么需要数据分片技术 数据库产品的市场 在互联网行业内,绝大部分开发人员都会遇到数据表的性 ...

  3. (专题一)06 MATLAB的算术运算

    基本算术运算 乘法运算:A的行数等于B的列数(A,B两矩阵维数和大小相容) 除法运算 逻辑运算 真为1,假为0 优先级,算术运算的优先级最高,逻辑运算的优先级最低,但逻辑非运算是单目运算,他的优先级比 ...

  4. 基于Springboot+Mybatis+Element UI开发的钢贸供应链系统

    小蓝钢贸云供应链系统以销售.采购.库存及财务一体化的设计理念,从供应商到客户的销售流程,实现订单.货物.资金的全面管控,并能对成本进行准确的跟踪与分析,为销售决策提供依据. 基于SpringBoot2 ...

  5. DVWA从注入到GETSHELL

    好好过你的生活,不要老是忙着告诉别人你在干嘛. 最近在复习学过的东西,自己就重新搭了个dvwa来学习新思路,写一些简单的脚本来练习写代码的能力. 众所周知SQL注入的危害是相当大的,对于每个老司机来说 ...

  6. python中闭包详解

    谈谈自己的理解:python中闭包,闭包的实质   闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个 ...

  7. burp suite 之 Scanner(漏洞扫描)

    Scanner选项:是一个进行自动发现 web 应用程序的安全漏洞的工具. 将抓取的包 通过选项卡发送至 Scanner下的Scan queue 首先来介绍 Scanner 下的 lssue acti ...

  8. Metasploit之漏洞利用( Metasploitable2)

    每个操作系统都会存在各种Bug,像Windows这样有版权的操作系统,微软公司会快速地开发针对这些Bug或漏洞的补丁,并为用户提供更新.全世界有大量的漏洞研究人员会夜以继日地发现.研究新的Bug,这些 ...

  9. php 图片转base4的格式

    <?php $url = '1.jpg'; $base64_img = base64_encode(file_get_contents($url));//将图片转base64编码 $imgArr ...

  10. NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数

    在写这篇文章的时候,我正在头晕,因为下班坐车回家,有些晕车了.头疼的要死.也吃不下去饭. 版本:NX11+VS2013 最近这一年已经由C++过度到C#,改用C#做应用程序开发和NX二次开发. C#在 ...