用于基于 HTTP 的图像处理的 Go API
开源 Go 库,支持在线智能裁剪、翻转或旋转图像、创建图像缩略图、图像缩放、为 PNG、WEBP、TIFF、PDF、GIF 和 SVG 添加水印等。
imaginary 是一个非常强大的基于 HTTP 的开源图像处理 Go API,它使软件开发人员能够通过私有或公共 HTTP 服务执行高级图像操作,并且依赖性较小。它支持高级操作,如 API 令牌授权、URL 签名保护、HTTP 流量限制策略和对 Web 客户端的 CORS 支持。该库可以从 HTTP POST 有效负载、服务器本地路径或远程 HTTP 服务器读取图像。
imaginary 是一个强大而稳定的库,建立在 libvips 之上,一个快速高效的图像处理。该库支持图像格式,例如 JPEG、PNG、HEIF、WEBP、TIFF、PDF、GIF 和 SVG 格式以及它们之间的透明转换。它为 Docker & Fly.io 提供了完整的支持。 Fly 的伟大之处在于它可以通过服务靠近用户位置的流量来减少延迟并提供更好的实践。
imaginary 库完全支持与图像创建、转换和操作相关的几个重要功能,例如图像大小调整、放大图像、图像裁剪、智能裁剪、旋转图像、带有进一步图像转换的自动旋转、基于 EXIF 元数据的自动翻转、图像翻转、缩放图像、创建图像缩略图、调整图像、嵌入或扩展图像、添加水印图像、为图像添加模糊效果等等。
从想象开始
安装 imaginary 的最简单和推荐的方法是通过 GitHub。
通过 GitHub 安装 imaginary
go get -u github.com/h2non/imaginary
通过 Go 将图像转换为其他格式
开源 API 虚构库支持轻松将图像转换为其他受支持的文件格式。您可以将图像保存为一些非常有用的格式,例如 JPEG、PNG 和 WEBP 格式。该库提供了具有附加质量和压缩设置的转换支持。您只需要提供正确的图像名称、地址和转换格式,该库只需几个 Go 命令即可轻松为您转换。
通过图像图书馆转换图像
func Convert(buf []byte, o ImageOptions) (Image, error) {
if o.Type == "" {
return Image{}, NewError("Missing required param: type", http.StatusBadRequest)
}
if ImageType(o.Type) == bimg.UNKNOWN {
return Image{}, NewError("Invalid image type: "+o.Type, http.StatusBadRequest)
}
opts := BimgOptions(o)
return Process(buf, opts)
}
通过 Go 进行在线图像裁剪
开源虚构库使软件开发人员能够在自己的应用程序中只用几行 Go 代码在线裁剪他们的图像。您可以通过提供自定义宽度或高度来裁剪图像。该库通过保持图像比例使您的工作变得轻松。该库还支持使用 libvips 内置的智能裁剪算法裁剪图像。您还可以为 PNG 图像定义图像压缩级别,并轻松翻转、翻转和旋转图像。
图书馆图像脱落
{
"operation": "crop",
"params": {
"width": 500,
"height": 300
}
调整图像大小以适合
Free imaginary library 支持在其应用程序中使用 Go 命令调整图像大小以适应大小。您可以轻松调整图像大小以适应宽度和高度,而无需裁剪。该库通过保持图像纵横比使您的工作变得轻松。宽度和高度指定图像的最大边界框。
通过自由图书馆恢复图像
func Resize(buf []byte, o ImageOptions) (Image, error) {
if o.Width == 0 && o.Height == 0 {
return Image{}, NewError("Missing required param: height or width", http.StatusBadRequest)
}
opts := BimgOptions(o)
opts.Embed = true
if o.IsDefinedField.NoCrop {
opts.Crop = !o.NoCrop
}
return Process(buf, opts)
}
旋转和自动旋转您的图像
Free imaginary library 提供了轻松旋转图像的功能。它还包括一个非常有用的功能,用于在 Go 应用程序中自动旋转图像。它会自动旋转图像,无需基于 EXIF 方向元数据进行进一步的图像转换。 AutoRotate 方法生成与输入图像具有相同大小和格式的新图像。
Auto-Rotate图像通过自由图书馆
func AutoRotate(buf []byte, o ImageOptions) (out Image, err error) {
defer func() {
if r := recover(); r != nil {
switch value := r.(type) {
case error:
err = value
case string:
err = errors.New(value)
default:
err = errors.New("libvips internal error")
}
out = Image{}
}
}