所有App Engine映像服务列表get_serving_url()URI选项

Tay*_*hes 43 google-app-engine image

在回答另一个问题时,评论者提到了一个未记录的URI选项,我不知道用App Engine图像服务水平/垂直翻转图像.

文档提到了一些基本选项:

  • = s0 - 全尺寸
  • = s640 - 最长边640px长
  • = s640-c - 640px square

很高兴能够生成一个完整的选项列表,或者如果有人可以提供他们知道的更多选项作为事实上的文档.

Tay*_*hes 91

在阅读一些随机帖子和手动做一些调查研究之间,我把以下列表放在一起.请放弃其他答案或评论中的任何其他知识,我可以在这里集成.

用法示例

我们可以通过将字符串添加到App Engine基于blob的图像URL的末尾,然后使用=字符来实现各种图像转换.可以通过用连字符分隔选项来组合选项,例如:

http://[image-url]=s200-fh-p-b10-c0xFFFF0000
Run Code Online (Sandbox Code Playgroud)

要么:

http://[image-url]=s200-r90-cc-c0xFF00FF00-fSoften=1,20,0:
Run Code Online (Sandbox Code Playgroud)

...具有以下效果(下面的文档):

作为一个如何令人敬畏的例子,这里是一个动画GIF,缩小和倒置:

...然后我们可以将其转换为带有一个额外参数的MP4视频:点击查看MP4版本


尺寸/作物

  • s640 - 在最大尺寸上生成640像素的图像
  • s0 - 原始尺寸图像
  • w100 - 生成100像素宽的图像
  • h100 - 生成100像素高的图像
  • s(没有值) - 拉伸图像以适合尺寸
  • c - 将图像裁剪为提供的尺寸
  • n - 与c相同,但来自中心的作物
  • p - 智能方形裁剪,尝试裁剪面部
  • pp - 替代智能方形裁剪,不会切断面(?)
  • cc - 生成循环裁剪的图像
  • ci - square crop to minimum:width,height或specified = s参数
  • nu - no-upscaling.禁用将图像大小调整为大于其原始分辨率.

PAN和ZOOM

  • x,y,z: - 平移和缩放平铺图像.这些对于未经处理的图像或没有某种形式的授权参数没有影响(请参阅googleartproject.com).

回转

  • fv - 垂直翻转
  • fh - 水平翻转
  • r {90,180,270} - 顺时针旋转图像90,180或270度

图片格式

  • rj - 强制生成的图像为JPG
  • rp - 强制生成的图像为PNG
  • rw - 强制生成的图像为WebP
  • rg - 强制生成的图像为GIF

  • v {0,1,2,3} - 将图像设置为不同的格式选项(适用于JPG和WebP)

强制PNG,WebP和GIF输出可以与圆形作物结合使用,以获得透明背景.强制JPG可以与边框颜色组合以填充透明图像中的背景.

动画GIF

  • rh - 从输入图像生成MP4
  • k - 杀死动画(生成静态图像)

MISC.

  • b10 - 为图像添加10px边框
  • c0xAARRGGBB - 设置边框颜色,例如.红色为= c0xffff0000
  • d - 添加标题以导致浏览器下载
  • e7 - 响应7天设置缓存控制max-age标头
  • l100 - 将JPEG质量设置为100%(1-100)
  • h - 使用包含图像的HTML页面进行响应
  • g - 使用Google的平移/缩放使用的XML进行响应

过滤器

  • fSoften = 1,100,0: - 其中100可以从0到100来模糊图像
  • fVignette = 1,100,1.4,0,000000其中100控制渐变的大小,000000是RRGGBB的边框阴影颜色
  • 无论提供的值如何,fInvert = 0,1都会反转图像
  • 无论提供的值如何,fbw = 0,1都会使图像变为黑白

未知参数

这些参数已被使用,但其效果未知:no,nd,mv

注意事项

某些选项(例如= l表示JPEG质量)似乎不会生成新图像.如果更改其他选项(大小等)并更改l值,则应显示质量更改.有些选项也不能很好地协同工作.这一切都没有被谷歌记录,可能是有充分理由的.

而且,依赖于永远存在的任何这些选项可能不是一个好主意.Google可以随时删除大部分内容,恕不另行通知.


cho*_*key 23

我有一天浏览了一些东西,然后我实际上在google的一个页面上找到了一个javascript资产,其中包含英文变量名称及其类型!这是我制作的格式很好的版本:

int:  s   ==> Size
int:  w   ==> Width
bool: c   ==> Crop
hex:  c   ==> BorderColor
bool: d   ==> Download
int:  h   ==> Height
bool: s   ==> Stretch
bool: h   ==> Html
bool: p   ==> SmartCrop
bool: pa  ==> PreserveAspectRatio
bool: pd  ==> Pad
bool: pp  ==> SmartCropNoClip
bool: pf  ==> SmartCropUseFace
int:  p   ==> FocalPlane
bool: n   ==> CenterCrop
int:  r   ==> Rotate
bool: r   ==> SkipRefererCheck
bool: fh  ==> HorizontalFlip
bool: fv  ==> VerticalFlip
bool: cc  ==> CircleCrop
bool: ci  ==> ImageCrop
bool: o   ==> Overlay
str:  o   ==> EncodedObjectId
str:  j   ==> EncodedFrameId
int:  x   ==> TileX
int:  y   ==> TileY
int:  z   ==> TileZoom
bool: g   ==> TileGeneration
bool: fg  ==> ForceTileGeneration
bool: ft  ==> ForceTransformation
int:  e   ==> ExpirationTime
str:  f   ==> ImageFilter
bool: k   ==> KillAnimation
int:  k   ==> FocusBlur
bool: u   ==> Unfiltered
bool: ut  ==> UnfilteredWithTransforms
bool: i   ==> IncludeMetadata
bool: ip  ==> IncludePublicMetadata
bool: a   ==> EsPortraitApprovedOnly
int:  a   ==> SelectFrameint
int:  m   ==> VideoFormat
int:  vb  ==> VideoBegin
int:  vl  ==> VideoLength
bool: lf  ==> LooseFaceCrop
bool: mv  ==> MatchVersion
bool: id  ==> ImageDigest
int:  ic  ==> InternalClient
bool: b   ==> BypassTakedown
int:  b   ==> BorderSize
str:  t   ==> Token
str:  nt0 ==> VersionedToken
bool: rw  ==> RequestWebp
bool: rwu ==> RequestWebpUnlessMaybeTransparent
bool: rwa ==> RequestAnimatedWebp
bool: nw  ==> NoWebp
bool: rh  ==> RequestH264
bool: nc  ==> NoCorrectExifOrientation
bool: nd  ==> NoDefaultImage
bool: no  ==> NoOverlay
str:  q   ==> QueryString
bool: ns  ==> NoSilhouette
int:  l   ==> QualityLevel
int:  v   ==> QualityBucket
bool: nu  ==> NoUpscale
bool: rj  ==> RequestJpeg
bool: rp  ==> RequestPng
bool: rg  ==> RequestGif
bool: pg  ==> TilePyramidAsProto
bool: mo  ==> Monogram
bool: al  ==> Autoloop
int:  iv  ==> ImageVersion
int:  pi  ==> PitchDegrees
int:  ya  ==> YawDegrees
int:  ro  ==> RollDegrees
int:  fo  ==> FovDegrees
bool: df  ==> DetectFaces
str:  mm  ==> VideoMultiFormat
bool: sg  ==> StripGoogleData
bool: gd  ==> PreserveGoogleData
bool: fm  ==> ForceMonogram
int:  ba  ==> Badge
int:  br  ==> BorderRadius
hex:  bc  ==> BackgroundColor
hex:  pc  ==> PadColor
hex:  sc  ==> SubstitutionColor
bool: dv  ==> DownloadVideo
bool: md  ==> MonogramDogfood
int:  cp  ==> ColorProfile
bool: sm  ==> StripMetadata
int:  cv  ==> FaceCropVersion
Run Code Online (Sandbox Code Playgroud)

笔记:

  • bool意味着只需添加变量
  • int表示变量名后面的数字
  • string表示变量名后的(可能是复杂的)字符串
  • hex表示变量名后的格式为0x000000的十六进制数
  • 变量用连字符分隔( - )


fal*_*lla 8

详细的v期权调查

我是怎么发现它的

v无意中发现了这个选项!

有一天,当我调查图像响应标题时,我发现了一个etag值设置为的属性v1.由于我还没有看到任何v选项,我只是尝试将其添加到图像网址并且它有效!尽管header属性值可能与v选项无关,但它帮助我意外地找到它.

调查效果如何工作

首先,我注意到设置v0和不设置v导致相同的响应,这表示v0返回原始图像没有v选项(就像s0s选项上使用将返回原始大小).

然后,我注意到,设置v1,v2v3逐步返回一个内容大小(重量)较小的图像,并在视觉上变得更差.有趣的是,设置v4,v5等等,没有继续优化.

调查效果是什么

有一天,我在另一张图片上测试了相同的参数,发现什么都没发生.这很有趣:一个适用于图像的选项而不适用于另一个图像,因此我开始测试图像之间的差异.回顾一下参数列表,我发现它可能是图像类型,事实确实如此!我试过的第一个图像类型v是JPEG,第二个是PNG.所以,我可以通过设置第二个既重现相同的效果rjv3!

因此,我搜索了有关JPEG类型的互联网,有趣的是我发现了一些来源(正如你在这里看到的,这里)解释了3种类型的JPEG:基线标准,基线优化和渐进,完全适合内部的三种变化该v选项!

调查效果何时起作用

v在其他图像类型上尝试了相同的选项,发现WebP也支持相同类型的自定义类型,也在相同的范围v0和之间逐步优化图像的重量和质量(但质量比JPEG低很多)v3.不幸的是,我还没有找到任何不同WebP类型的来源.

此外,它在GIF上使用时没有任何改变,但是,作为PNG类型,您还可以将其选项与rj和组合v3,但您(当然)会丢失GIF动画和质量.