imgproxy

快速安全的即时图像处理
授权协议 MIT
开发语言 C/C++ Google Go
所属分类 程序开发、 图形/图像处理
软件类型 开源软件
地区 不详
投 递 者 孙泉
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

imgproxy 是一个快速且安全的独立服务器,用于调整和转换远程图像的大小。imgproxy 的主要原则是简单、快速和安全。

imgproxy 可用于提供一种快速且安全的方式来替换你的 Web 应用程序的所有图像大小调整代码(如调用 ImageMagick 或 GraphicsMagick,或使用库),同时还能够快速轻松地调整所有内容的大小。imgproxy 在处理大量图像大小调整时也是必不可少的,尤其是当图像来自远程源时。

当你需要动态调整多个图像的大小以使其与你的应用程序设计匹配时,它非常有用,而无需准备大量缓存的调整大小的图像或每次设计更改时都重新执行。

imgproxy 是一个 Go 应用程序,可以在任何 Unix 环境中安装和使用 —— 也可以使用 Docker 进行容器化。

简单

imgproxy 仅包含图像处理、微调和安全性的必备功能。具体来说,

  • 能够对图像进行旋转、翻转和应用蒙版会很棒,但在大多数情况下,使用 CSS3 可以——而且更容易——做到这一点。
  • 内置某种类型的 HTTP 缓存可能很棒,但为此使用内容交付网络或缓存代理服务器会更好,因为您迟早必须在生产环境中执行此操作。
  • 内置所有内容(例如 HTTPS 支持)可能很有用,但解决这个问题的简单方法就是使用代理 HTTP 服务器,例如 nginx。

速度

imgproxy 使用可能是最有效的图像处理库,称为 libvips. 它运行速度快,内存占用非常低;有了它,我们可以即时处理大量图像。

imgproxy 还使用原生 Go 的net/http路由来获得最佳的 HTTP 网络支持。

安全

在安全方面,大量处理远程图像是一件潜在的危险事情。攻击媒介有很多,因此最好先考虑攻击预防措施。以下是 imgproxy 如何提供帮助:

  • imgproxy在下载时会检查图像类型和“real”尺寸,因此如果图像格式未知或尺寸太大(有一个设置),则不会完全下载图像。这就是 imgproxy 如何保护你免受 https://www.bamsoftware.com/hacks/deflate.html 中描述的所谓“image bombs”的侵害 。

  • imgproxy 使用签名保护图像 URL,因此攻击者无法通过请求多个图像调整大小来引发拒绝服务攻击。

  • imgproxy 支持通过 HTTP 标头进行授权。这可以防止攻击者直接使用 imgproxy,但允许通过 CDN 或缓存服务器使用它——只需向代理或 CDN 配置添加标头即可。

  • 无图,纯干货,信息量较大,慎入! 最近几天的成果,浓缩下来就是这么一行代码: document.getElementById('img1').src = 'http://www.mysite.com/imgproxy' + imgproxy(document.getElementById("img1").getAttribute('data-src'), 135, 85); 寻找合适的图床 最初的

 相关资料
  • 我正在尝试让exception_handler从事一个大型项目。但是,异常处理程序未按预期运行。关于我可能缺少什么的任何建议? 简化项目结构: 我有上述项目结构 app.py公司 我正在将此对象导入exception_handler。py,它具有处理所有应用程序相关异常的代码 但是,异常处理程序未按预期运行。如果我将exception_handler移动到app。皮,它起作用了。 参考: http

  • 当我通过VS代码运行我的网页时,我的所有图片都会显示出来,但由于某种原因,当我通过localhost运行网页时,没有任何图片或CSS被发送。这是我下面的代码,任何帮助都将不胜感激。我曾试图在网上找到解决方案,但迄今为止似乎没有任何效果。 这是我的文件结构

  • 什么是快速可靠的方法来阈值图像可能模糊和不均匀的亮度? 示例(模糊但亮度一致): 因为不能保证图像具有均匀的亮度,所以使用固定阈值是不可行的。自适应阈值工作正常,但由于模糊,它会在特征中造成中断和扭曲(这里,重要的特征是数独数字): 我也尝试过使用直方图均衡化(使用OpenCV的均衡器函数)。它在不减少亮度差异的情况下增加对比度。 我找到的最佳解决方案是将图像按其形态闭合(归功于这篇文章)进行分割

  • 问题内容: 我设法在Swift中为注解图钉获得了一个自定义图标,但是现在我仍然对2个不同的注解使用不同的图像。现在,一个按钮会在地图上添加注释。应该有另一个按钮,该按钮也添加了注释,但带有另一个图标。 有没有办法为此使用复用ID? 问题答案: 在委托方法中,设置调用该方法所基于的依据。 一定要做到这一点 后 视图被出队或创建的(而不是只在部分)。否则,使用出队视图的注释将显示以前使用该视图的注释的

  • 从前面分析可以看出,某个vm的安全组相关规则的chain的名字,跟vm的id的前9个字符有关。 因此,要快速查找qbr-XXX上相关的iptables规则,可以用iptables -S列出(默认是filter表)所有链上的规则,其中含有id的链即为虚拟机相关的安全组规则。其中--physdev-in表示即将进入某个网桥的端口,--physdev-out表示即将从某个网桥端口发出。 #iptable

  • 我正在尝试在运行时使用Java2D和某种像样的抗锯齿插值(如双线性)来扩展backbuffer。我的想法是将场景渲染到此图像,然后在全屏模式下放大图像,以匹配用户具有的任何分辨率。 请注意,全屏模式很重要。这在窗口模式下不会发生。 有没有一种使用硬件扩展的快速方法?Javadocs建议它存在(-Dsun.java2d.ddscale=true),但它对我没有影响。 代码如下: 结果是: 最近邻(约