imageMogr2 提供一系列高级图片处理功能,包括格式转换、缩放、裁剪、旋转等。imageMogr2 接口可支持处理的原图片格式有 psd、jpeg、png、gif、webp、tiff、bmp。(webp不支持动图)

注意

imageMogr2 接口支持的最大 gif 帧数为 200,超过 200,处理结果只返回原图。

输出为gif的处理一般处理时间比较长,建议优先使用异步处理。

接口规格

注意: 接口规格不含任何空格与换行符。

imageMogr2/auto-orient

/thumbnail/

/strip

/gravity/

/crop/

/rotate/

/format/

/blur/x

/interlace/

/background/

/quality/

/sharpen/

/size-limit/

/ignore-error/参数名称

必填

说明

auto-orient

建议放在首位,根据原图EXIF信息自动旋正,便于后续处理。

thumbnail

参看缩放操作参数表,默认为不缩放。

strip

去除图片中的元信息。去除的信息有:bKGD、cHRM、EXIF、gAMA、iCCP、iTXt、sRGB、tEXt、zCCP、zTXt、date

gravity

参看图片处理重心参数表,目前在imageMogr2中只影响其后的裁剪偏移参数,默认为左上角(NorthWest)。

crop

参看裁剪操作参数表,默认为不裁剪。

rotate

旋转角度,取值范围为1-360,默认为不旋转。

format

图片格式。支持jpg、gif、png、webp等,默认为原图格式,参看支持输出的图片格式。

blur

高斯模糊参数。radius是模糊半径,取值范围为1-50。sigma是正态分布的标准差,必须大于0。图片格式为gif时,不支持该参数。

interlace

是否支持渐进显示。取值1支持渐进显示,取值0不支持渐进显示(默认为0)。适用jpg目标格式,网速慢时,图片显示由模糊到清晰。

background

背景填充颜色,可以是颜色名称(比如red)或十六进制颜色(比如#FF0000)的URL安全的Base64编码。我们支持的颜色名称有transparent(#00000000)、none(#00000000)、white(#FFFFFF)、black(#000000)、red(#FF0000)、orange(#FFA500)、yellow(#FFFF00)、green(#008000)、blue(#0000FF)、purple(#800080)、gray(#7E7E7E)、pink(#FFC0CB),其中none与transparent均为透明背景色,另外十六进制颜色不区分大小写,具体颜色请参考颜色编码表。缺省背景色为white(#FFFFFF)。

quality

新图的图片质量。取值范围为1-100,默认75。七牛会根据原图质量算出一个修正值,取修正值和指定值中的小值。

注意:

1.指定值后面可以增加 !,表示强制使用指定值,如:100!。

2.支持图片类型:jpg。

sharpen

图片是否锐化,当设置值为1时打开锐化效果。

size-limit

限制图片转换后的大小,支持以兆字节和千字节为单位的图片。

1.仅对于jpg格式的图片,可以用于限制图片转换后的大小,支持魔法变量$(fsize)表示原图大小。如:http://developer.qiniu.com/resource/Ship.jpg?imageMogr2/size-limit/$(fsize)。

2.对于所有图片格式,若在尾部加上!,表示用转换后的图片大小与原图大小做比较,如果转换后的图片比原图小,则返回转换后的图片,否则返回原图。如:http://developer.qiniu.com/resource/Ship.jpg?imageMogr2/size-limit/15k!。这个主要用于保证返回的图片不会比原图大。

注意: 需要根据图片实际大小设置合理的sizeLimit大小。

ignore-error

取值为 1 时,则处理失败时返回原图;取值为 0 时,则处理失败时返回错误信息。默认值为 0。

修正值算法:

原图quality <= 90: min[90, 原图quality*sqrt(原图长宽乘积/结果图片长宽乘积)]

原图quality > 90: 原图quality*sqrt(原图长宽乘积/结果图片长宽乘积)

注意:

处理后的图片w和h参数不能超过9999像素,总像素不得超过24999999(2500w-1)像素。

处理前的图片w和h参数不能超过3万像素,总像素不能超过 2 亿像素。

缩放操作参数表

参数名称

必填

说明

/thumbnail/!p

基于原图的长宽,按指定百分比缩放。Scale取值范围1-999。

/thumbnail/!px

以百分比形式指定目标图片宽度,高度不变。Scale取值范围1-999。

/thumbnail/!xp

以百分比形式指定目标图片高度,宽度不变。Scale取值范围1-999。

/thumbnail/x

指定目标图片宽度,高度等比缩放,Width取值范围1-9999。

/thumbnail/x

指定目标图片高度,宽度等比缩放,Height取值范围1-9999。

/thumbnail/x

等比缩放,比例值为宽缩放比和高缩放比的较小值,Width 和 Height 取值范围1-9999。

注意: 宽缩放比:目标宽/原图宽   高缩放比:目标高/原图高

/thumbnail/!xr

等比缩放,比例值为宽缩放比和高缩放比的较大值,Width 和 Height 取值范围1-9999。

注意: 宽缩放比:目标宽/原图宽   高缩放比:目标高/原图高

/thumbnail/x!

按指定宽高值强行缩略,可能导致目标图片变形,width和height取值范围1-9999。

/thumbnail/x>

等比缩小,比例值为宽缩放比和高缩放比的较小值。如果目标宽和高都大于原图宽和高,则不变,Width 和 Height 取值范围1-9999。

注意: 宽缩放比:目标宽/原图宽   高缩放比:目标高/原图高;

/thumbnail/x<

等比放大,比例值为宽缩放比和高缩放比的较小值。如果目标宽(高)小于原图宽(高),则不变,Width 和 Height 取值范围1-9999。

注意: 宽缩放比:目标宽/原图宽   高缩放比:目标高/原图高;

/thumbnail/@

按原图高宽比例等比缩放,缩放后的像素数量不超过指定值,Area取值范围1-24999999。

注意:

处理后的图片 Width 和 Height 范围1-9999,总像素小于2500万像素。

处理前的图片 Width 和 Height 范围1-29999,总像素不超过 2 亿像素。

图片处理重心参数表

在图片高级处理现有的功能中只影响其后的裁剪操作参数表,即裁剪操作以 gravity 为原点开始偏移后,进行裁剪操作。

NorthWest | North | NorthEast

| |

| |

--------------+----------------+--------------

| |

West | Center | East

| |

--------------+----------------+--------------

| |

| |

SouthWest | South | SouthEast

裁剪操作参数表 (cropsize)

参数名称

必填

说明

/crop/x

指定目标图片宽度,高度不变。取值范围为0-10000。

/crop/x

指定目标图片高度,宽度不变。取值范围为0-10000。

/crop/x

同时指定目标图片宽高。取值范围为0-10000。

裁剪偏移参数表 (cropoffset)

参数名称

必填

说明

/crop/!{cropsize}aa

相对于偏移锚点,向右偏移dx个像素,同时向下偏移dy个像素。取值范围不限,小于原图宽高即可。

/crop/!{cropsize}-a

相对于偏移锚点,从指定宽度中减去dx个像素,同时向下偏移dy个像素。取值范围不限,小于原图宽高即可。

/crop/!{cropsize}a-

相对于偏移锚点,向右偏移dx个像素,同时从指定高度中减去dy个像素。取值范围不限,小于原图宽高即可。

/crop/!{cropsize}--

相对于偏移锚点,从指定宽度中减去dx个像素,同时从指定高度中减去dy个像素。取值范围不限,小于原图宽高即可。

示例

/crop/!300x400a10a10 表示从源图坐标为 x:10,y:10 处截取 300x400 的子图片。

/crop/!300x400-10a10 表示从源图坐标为 x:0,y:10 处截取 290x400 的子图片。

注意

必须同时指定横轴偏移和纵轴偏移。

计算偏移值会受到位置偏移指示符 /gravity/ 的影响。默认为相对于左上角 NorthWest 计算偏移值,参考图片处理重心参数表。

转义说明

部分参数以 ! 开头,表示参数将被转义。为便于阅读,我们采用特殊转义方法,如下所示:

p => % (percent)

r => ^ (reverse)

a => + (add)

即 !50x50r 实际代表 50x50^ 这样一个字符串。而 !50x50 实际代表 50x50 这样一个字符串(该字符串并不需要转义)。 中的 OffsetGeometry 部分可以省略,默认为 +0+0。即 /crop/50x50 等价于 /crop/!50x50a0a0,执行 -crop 50x50+0+0 语义。

请求报文

请求语法

GET ? HTTP/1.1

Host:

头部信息

头部名称

必填

说明

Host

下载服务器域名,可为七牛三级域名或自定义二级域名,参考七牛自定义域名绑定流程。

响应报文

响应语法

HTTP/1.1 200 OK

Content-Type:

头部信息

头部名称

必填

说明

Content-Type

MIME类型,成功时为图片的MIME类型,失败时为application/json。

Cache-Control

缓存控制,失败时为no-store,不缓存。

响应内容

如果请求成功,返回图片的二进制数据。

如果请求失败,返回包含如下内容的 JSON 字符串(已格式化,便于阅读):

{

"code": ,

"error": "",

}字段名称

必填

说明

code

HTTP状态码,请参考响应状态码。

error

与HTTP状态码对应的消息文本。

响应状态码

HTTP状态码

含义

200

缩放成功。

400

请求报文格式错误。

404

资源不存在。

599

服务端操作失败。如遇此错误,请将完整错误信息(包括所有的HTTP响应头部)提交工单 给我们。

注意

imageMogr2生成的图片会被七牛云存储缓存以加速下载,但不会持久化。需要持久化的缩略图,请参考持久化数据处理 (pfop)和处理结果另存 (saveas)。

auto-orient 参数是和图像处理顺序相关的,一般建议放在首位(根据原图EXIF信息自动旋正)。

thumbnail 和 crop 之间的操作可以链式处理,即可以先对图进行缩略再裁剪,或者先裁剪再缩略。

gravity 只会使其后的裁剪偏移 cropoffset 受到影响,建议放在 /crop 参数之前。

当处理多帧 gif 图片时,可能处理所需的时间较长并且输出的图片体积较大。如果您有多张多帧 gif 图片需要处理,可在图片上传完成后异步进行预转,这样不必在初次访问时进行图片处理,访问速度更快。请参考预转持久化处理 (persistentOps)。

当一张含有透明区域的图片,转换成不支持透明区域的图片格式 jpg、bmp 等时,透明区域填充白色。

界面操作方式

通过调试命令参数的方式,对使用者并不方便。我们提供了图片处理的图形化编辑界面,通过以下方式进入:

1、 登录 七牛控制台,并点击打开 图片处理

2、 选择常用场景,并开始编辑图片处理命令

实时示例

缩放

1. 生成 480x320 缩略图

等比缩小 75%:

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/!75p

按原宽度 75% 等比缩小:

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/!75px

按原高度 75% 等比缩小:

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/!x75p

2. 生成 700x467 放大图

指定新宽度为 700px:

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/700x

指定新高度为 467px:

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/x467

3. 限定长边,生成不超过 300x300 的缩略图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/300x300

4. 限定短边,生成不小于 200x200 的缩略图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/!200x200r

5. 强制生成 200x300 的缩略图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/200x300!

6. 原图大于指定长宽矩形,按长边自动缩小为 200x133 缩略图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/200x300>

7. 原图小于指定长宽矩形,按长边自动拉伸为 700x467 放大图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/700x600<

8. 生成图的像素总数小于指定值

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/350000@

裁剪

1. 生成 300x427 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/crop/300x

2. 生成 640x200 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/crop/x200

3. 生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/crop/300x300

4. 生成 300x300 裁剪图,偏移距离 30x100

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/crop/!300x300a30a100

5. 生成 300x200 裁剪图,偏移距离 30x0

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/crop/!300x300a30-100

6. 生成 270x300 裁剪图,偏移距离 0x100

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/crop/!300x300-30a100

7. 生成 270x200 裁剪图,偏移距离 0x0

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/crop/!300x300-30-100

8. 锚点在左上角 (NorthWest),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/NorthWest/crop/300x300

9. 锚点在正上方 (North),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/North/crop/300x300

10. 锚点在右上角 (NorthEast),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/NorthEast/crop/300x300

11. 锚点在正左方 (West),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/West/crop/300x300

12. 锚点在正中 (Center),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/Center/crop/300x300

13. 锚点在正右方 (East),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/East/crop/300x300

14. 锚点在左下角 (SouthWest),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/SouthWest/crop/300x300

15. 锚点在正下方 (South),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/South/crop/300x300

16. 锚点在右下角 (SouthEast),生成 300x300 裁剪图

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/gravity/SouthEast/crop/300x300

旋转

1. 顺时针旋转 45 度:

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/rotate/45

2. 旋转并添加背景色

http://qiniuphotos.qiniudn.com/gogopher.jpg?imageMogr/v2/auto-orient/thumbnail/!256x256r/gravity/center/crop/!256x256/blur/3x9/quality/80/rotate/45/background/b3Jhbmdl

高斯模糊

半径为 3,Sigma 值为 5:

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/blur/3x5

渐进显示

渐进显示图片:

https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageMogr2/thumbnail/300x300/interlace/1

##保存图片

可以实时保存图片到指定空间,在上述url的基础上,加上|saveas/encoded(saved_bucket:saved_key)参数。

1. 原资源是一个名为 Ship.jpg 的图片:

http://7xvilo.com1.z0.glb.clouddn.com/Ship.jpg

2. 将图片做缩略处理:

http://7xvilo.com1.z0.glb.clouddn.com/Ship.jpg?imageMogr2/thumbnail/200x200!

3. 对上述云处理结果进行持久化保存:

#另存操作的目标空间与资源名

entryURI = "qiniu-developer:Ship-thumb-200x200.jpg"

#编码结果

encodedEntryURI = "cWluaXUtZGV2ZWxvcGVyOlNoaXAtdGh1bWItMjAweDIwMC5qcGc="

#需要签名的部分

signingStr = "7xvilo.com1.z0.glb.clouddn.com/Ship.jpg?imageMogr2/thumbnail/200x200!|saveas/cWluaXUtZGV2ZWxvcGVyOlNoaXAtdGh1bWItMjAweDIwMC5qcGc="

#签名算法

import hmac

import hashlib

import base64

str = hmac.new('m6TAzSGQUIU2y5G4F9iLzBh7aDz25rYkj8J....','7xvilo.com1.z0.glb.clouddn.com/Ship.jpg?imageMogr2/thumbnail/200x200!|saveas/cWluaXUtZGV2ZWxvcGVyOlNoaXAtdGh1bWItMjAweDIwMC5qcGc=',hashlib.sha1).digest().encode('base64').rstrip()

print str

#签名结果

sign = "bcgojLbLKTsTlhm3XFMYq0cn3lW2G3NAu.....:iRukarshohgP1ZVSOPp2U6nxhok="

##注意 其中m6TAzSGQUIU2y5G4F9iLzBh7aDz25rYkj8J....指的是sk,bcgojLbLKTsTlhm3XFMYq0cn3lW2G3NAu.....指的是ak,ak,sk在个人面板,密钥管理处获得。

4. 最终得到的完整下载 URL:

http://7xvilo.com1.z0.glb.clouddn.com/Ship.jpg?imageMogr2/thumbnail/200x200!|saveas/cWluaXUtZGV2ZWxvcGVyOlNoaXAtdGh1bWItMjAweDIwMC5qcGc=/sign/bcgojLbLKTsTlhm3XFMYq0cn3lW2G3NAuJYXZDDf:iRukarshohgP1ZVSOPp2U6nxhok=

5. 保存转码后资源可通过如下 URL 访问:

http://7xvilo.com1.z0.glb.clouddn.com/Ship-thumb-200x200.jpg

异步实例

触发持久化

以Python Sdk为例,本例将空间名为bucket_name中的图片key缩略为长200宽200的图片,并且保存到目标Bucket_Name,且文件名为自定义文件key。

注意:

其他语言 Sdk 可在官方 Sdks下载,可以通过查看 Sdk 使用指南中触发持久化使用。

from qiniu import Auth, PersistentFop, build_op, op_save, urlsafe_base64_encode

#对已经上传到七牛的图片发起异步缩略操作

#access_key,secret_key在个人面板的密钥管理处获得,非个人账号密码

access_key = '...'

secret_key = '...'

q = Auth(access_key, secret_key)

#要缩略的文件所在的空间和文件名。

bucket_name = '...'

key = '...'

#pipeline是使用的队列名称,不设置代表不使用私有队列,使用公有队列。

pipeline = '...'

#要进行缩略的操作。

fops = 'imageMogr2/thumbnail/200x200!'

#可以对缩略后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间

saveas_key = urlsafe_base64_encode('目标Bucket_Name:自定义文件key')

fops = fops+'|saveas/'+saveas_key

pfop = PersistentFop(q, bucket_name, pipeline)

ops = []

ops.append(fops)

ret, info = pfop.execute(key, ops, 1)

print(info)

assert ret['persistentId'] is not None

预转持久化

以Python Sdk为例,本例中将上传的图片缩略为长200宽200的图片,缩略图保存到目标Bucket_Name,且文件名为自定义文件key,原图保存到bucket_name空间,且文件名为key。

注意:

其他语言 Sdk 可在官方 Sdks下载,可以通过查看 Sdk 使用指南中预转持久化使用。

from qiniu import Auth, put_file, etag, urlsafe_base64_encode

import qiniu.config

#access_key,secret_key在个人面板的密钥管理处获得,非个人账号密码

access_key = '...'

secret_key = '...'

# 初始化Auth状态

q = Auth(access_key, secret_key)

# 你要测试的空间, 并且这个文件名key在你空间中存在

bucket_name = '...'

key = '...'

# 是使用的队列名称,不设置代表不使用私有队列,使用公有队列。

pipeline = '...'

# 设置图片缩略参数

fops = 'imageMogr2/thumbnail/200x200!'

# 通过添加'|saveas'参数,指定处理后的文件保存的bucket和key,不指定默认保存在当前空间,bucket_saved为目标bucket,bucket_saved为目标key

saveas_key = urlsafe_base64_encode('目标Bucket_Name:自定义文件key')#

fops = fops+'|saveas/'+saveas_key

# 在上传策略中指定fobs和pipeline

policy={

'persistentOps':fops,

'persistentPipeline':pipeline

}

token = q.upload_token(bucket_name, key, 3600, policy)

# 图片所在的本地路径

localfile = '...'

ret, info = put_file(token, key, localfile)

print(info)

assert ret['key'] == key

assert ret['hash'] == etag(localfile)

七牛云删除图片接口_图片高级处理(imageMogr2)相关推荐

  1. 七牛云删除图片接口_图片基本处理(imageView2)

    imageView2 提供简单快捷的图片格式转换.缩略.剪裁功能.只需要填写几个参数,即可对图片进行缩略操作,生成各种缩略图.imageView2接口可支持处理的原图片格式有psd.jpeg.png. ...

  2. 实现Java+Vue上传图片到七牛云和从七牛云删除图片

    环境准备 开发环境 后端: JDK1.8, SpringBoot2.2.2.RELEASE, Maven3.6.3 前端: vue-element-admin4.4.0 相关链接 七牛云JavaSDK ...

  3. php利用七牛云的对象存储完成图片上传-高效管理图片(用php搭建一个自己的图床) nice!!!

    在搭建个人博客时,大家都会买一台云服务器.可是图片的存放一直是一个问题,这里分享一个免费的第三方平台对象存储-七牛云.大家可以把图片上传到七牛云的对象存储,大大节约服务器的压力. 首先,大家在使用七牛 ...

  4. 七牛云删除图片接口_Thinkphp连接七牛云存储空间删除图片

    关于七牛云的基础知识不做介绍,建议先看看如何上传图片: 下面直接上代码:/** * 删除图片 * @return \think\response\Json */ public function del ...

  5. vue+php使用七牛云存储解决富文本图片冗余问题

    解决服务器中图片冗余的方法很多,本篇介绍利用七牛云自带的api解决图片冗余问题 问题: 在前端编辑富文本上传图片时,一般有两种方式,一种是将图片在本地预览,文件则在本地缓存,一种是直接上传服务器,然后 ...

  6. 七牛 java 加水印_图片水印处理(watermark)

    注意: watermark 接口支持的最大 gif 帧数为 200,超过 200,处理结果只返回原图. 图片水印 接口规格 注意: 接口规格不含任何空格与换行符. watermark/1 /image ...

  7. 关于七牛云CDN服务器存储的图片在部分网络下无法访问的问题

    现在很多网站使用的图片都是存储在云服务器上的,七牛云就是很受欢迎的一种,我们公司也是使用这个服务提供商,但是偶尔公司网络会发现访问七牛上存储的图片全部裂了,查看问题说是无法解析域名,经过检查和询问七牛 ...

  8. 七牛云入门使用步骤(图片服务器使用)

    登入七牛云官网得到3个比较重要的参数. 如图 1.sk 2.ak 3.测试域名 第一步导入七牛云sdk <!-- 七牛存储的SDK --><dependency><gro ...

  9. PHP图片裁剪_图片缩放_PHP生成缩略图

    2019独角兽企业重金招聘Python工程师标准>>> 在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多, ...

最新文章

  1. input属性为number,maxlength不起作用的解决方案
  2. visudo 普通用户账户 添加root全新
  3. Scala函数的调用
  4. html <link>标签
  5. 前端学习(2612):vuex实现计算
  6. Qt 调用VISA库通过SCPI程控仪器-以IT8906A电子负载为例
  7. numpy 加速 矩阵相加_Numpy知识
  8. mysql密码正确却提示错误,不使用密码反而能登录
  9. Python twisted事件驱动网络框架 源码剖析
  10. android studio没有logcat窗口_区块链研究实验室|从Android调用区块链智能合约
  11. java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec
  12. 翻译: 自动驾驶汽车技术:自动驾驶汽车如何工作?
  13. 从0开始——CAD与Tekla开发入门
  14. html5中框架怎么写,html框架布局模板
  15. 互联网发展的四个阶段总结
  16. 2019年04月02日清明上海迪士尼游
  17. 必备配色攻略-绿色篇
  18. 来自《星际迷航》的灵感启发
  19. 阿里云Oss水印图片处理Utils
  20. 此实现不是windows平台fips验证的加密算法的一部分

热门文章

  1. Python: CIR过程蒙特卡洛模拟
  2. 千锋教育python2104期总结day11
  3. 全网最详细的华为OD知识,值不值得去看这篇就够了!
  4. 一名普通游戏开发者的年终总结
  5. 数字音乐大变局:不再有免费午餐
  6. DP31 买卖股票的最好时机(二)、(三)、(四)
  7. 锁屏浮窗显示,可浮在有密码来电界面之上
  8. 第三方平台对接UU跑腿
  9. 高数 | 定积分的应用 柱壳法 圆柱法
  10. MATLAB处理OBJ模型