imgix

package
v0.11.21 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

* @Author: kamalyes 501893067@qq.com * @Date: 2024-12-09 12:15:51 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-12-10 09:30:55 * @FilePath: \go-toolbox\pkg\imgix\base.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2024-12-13 09:55:55 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-12-15 09:09:15 * @FilePath: \go-toolbox\pkg\imgix\drawer.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CalculateControlPoint added in v0.11.21

func CalculateControlPoint(start, end *gg.Point, offset float64) *gg.Point

CalculateControlPoint 计算控制点以实现弯曲效果 @param start 起始点 @param end 结束点 @param offset 偏移量 @return *gg.Point 返回计算得到的控制点

func CalculateFractionPoint added in v0.11.21

func CalculateFractionPoint(startPoint, endPoint *gg.Point, fraction float64, mode CalculateFractionPointMode) *gg.Point

CalculateFractionPoint 计算任意分数的坐标 @param startPoint 起始点 @param endPoint 结束点 @param fraction 计算的分数 @param mode 计算模式(加、减、乘、除) @return *gg.Point 返回计算得到的坐标

func CalculateMultiplePoints added in v0.11.21

func CalculateMultiplePoints(points []*gg.Point, mode PointMaxMin, axis AxisPointMode) *gg.Point

CalculateMultiplePoints 计算多个点中的最大或最小点

func CalculatePoint added in v0.11.21

func CalculatePoint(a, b *gg.Point, mode PointMaxMin, axis AxisPointMode) *gg.Point

CalculatePoint 返回两个点中在指定维度上较大的或较小的点

func CanFormTriangle added in v0.11.21

func CanFormTriangle(points []*gg.Point) (float64, bool, error)

判断三个点是否能构成三角形

func EncodeImageToBase64 added in v0.11.18

func EncodeImageToBase64(img image.Image, format ImageFormat, quality int) (string, error)

EncodeImageToBase64 将图像编码为 Base64 字符串

func LoadImageFromFile added in v0.11.18

func LoadImageFromFile(filePath string) (image.Image, error)

LoadImageFromFile 从给定的文件路径加载图片并返回 image.Image 对象

func LoadImageFromFileAndEncodeToBase64 added in v0.11.18

func LoadImageFromFileAndEncodeToBase64(filePath string, format ImageFormat, quality int) (string, error)

LoadImageFromFileAndEncodeToBase64 从文件加载图片并返回 Base64 编码字符串

func LoadImageFromURL

func LoadImageFromURL(url string) (image.Image, error)

LoadImageFromURL 从给定的 URL 加载图片并返回 image.Image 对象

func ResizeDownTriangle added in v0.11.21

func ResizeDownTriangle(vertexA, vertexB, vertexC *gg.Point, resizeXy float64) (*gg.Point, *gg.Point)

ResizeDownTriangle 根据固定点缩小三角形的两个顶点 @params vertexA: 固定点的坐标 @params vertexB: 需要缩小的第一个点的坐标 @params vertexC: 需要缩小的第二个点的坐标 @params resizeXy: 缩小因子,值小于1表示缩小 @return: 新的 vertexB 和 vertexC 的坐标

func ResizePoint added in v0.11.21

func ResizePoint(point *gg.Point, resizeX, resizeY float64) *gg.Point

ResizePoint 单个坐标轴的等比例缩放

func ResizePoints added in v0.11.21

func ResizePoints(points []*gg.Point, scaleX, scaleY float64) []*gg.Point

ResizePoints 批量缩放多个点,支持不同的 x 和 y 缩放因子 @param points: 需要缩放的点的切片 @param scaleX: x 轴的缩放因子 @param scaleY: y 轴的缩放因子 @return []*gg.Point: 返回缩放后的点的切片

func ResizeUpTriangle added in v0.11.21

func ResizeUpTriangle(vertexA, vertexB, vertexC *gg.Point, resizeXy float64) (*gg.Point, *gg.Point)

ResizeUpTriangle 根据固定点放大三角形的两个顶点 @params vertexA: 固定点的坐标 @params vertexB: 需要放大的第一个点的坐标 @params vertexC: 需要放大的第二个点的坐标 @params resizeXy: 放大因子,值大于1表示放大 @return: 新的 vertexB 和 vertexC 的坐标

func ResizeX added in v0.11.21

func ResizeX(point *gg.Point, scaleFactor float64) *gg.Point

ResizeX 只缩放 x 坐标

func ResizeY added in v0.11.21

func ResizeY(point *gg.Point, scaleFactor float64) *gg.Point

ResizeY 只缩放 y 坐标

func SaveBufToImageFile

func SaveBufToImageFile(buf *bytes.Buffer, filePath string, format ImageFormat) error

SaveBufToImageFile 将Buf数据保存到本地文件

func UpdateBounds added in v0.11.21

func UpdateBounds(x, y float64, left, top, right, bottom *float64)

UpdateBounds 更新边界值 @param x 当前坐标的X值 @param y 当前坐标的Y值 @param left 左边界的指针 @param top 上边界的指针 @param right 右边界的指针 @param bottom 下边界的指针

func WriterImage

func WriterImage(img image.Image, quality int, format ImageFormat, output io.Writer) error

WriterImage 将图像写入输出

func WriterImageFromBytes

func WriterImageFromBytes(data []byte, quality int, format ImageFormat, output io.Writer) error

WriterImageFromBytes 将字节切片转换为图像并写入输出

Types

type AxisPointMode added in v0.11.21

type AxisPointMode int

定义轴的枚举类型

const (
	AxisX AxisPointMode = iota // X轴
	AxisY                      // Y轴
)

type CalculateFractionPointMode added in v0.11.21

type CalculateFractionPointMode int

CalculateFractionPointMode 类型定义,用于表示计算模式

const (
	Add CalculateFractionPointMode = iota
	Subtract
	Multiply
	Divide
)

type Coordinates added in v0.11.21

type Coordinates struct {
	Top    HorizontalEdge // 上边,包含最左边和最右边的点
	Bottom HorizontalEdge // 下边,包含最左边和最右边的点
	Left   VerticalEdge   // 左边,包含顶点和底点
	Right  VerticalEdge   // 右边,包含顶点和底点
}

Coordinates 结构体表示边界框的坐标,包含四条边

func CleanCoordinates added in v0.11.21

func CleanCoordinates(pointsMap map[string]gg.Point) Coordinates

CleanCoordinates 函数接受一个 map[string]Point,返回清洗后的边界框坐标

type DashOptions added in v0.11.20

type DashOptions struct {
	// contains filtered or unexported fields
}

func NewDashOptions added in v0.11.20

func NewDashOptions(dashLength, gapLength, lineWidth DashStyle) DashOptions

NewDashOptions 创建一个新的 DashOptions 实例 如果提供了自定义的段长度和间隔长度,则使用它们;否则使用默认值

func (*DashOptions) DashLength added in v0.11.20

func (d *DashOptions) DashLength() DashStyle

DashLength 返回虚线段长度的 float64 表示

func (*DashOptions) GapLength added in v0.11.20

func (d *DashOptions) GapLength() DashStyle

GapLength 返回虚线间隔长度的 float64 表示

func (*DashOptions) LineWidth added in v0.11.21

func (g *DashOptions) LineWidth() DashStyle

获取 LineWidth 的方法

type DashStyle added in v0.11.20

type DashStyle float64

type GraphicsRenderer added in v0.11.20

type GraphicsRenderer struct {
	GgCtx       *gg.Context
	DashOptions DashOptions
	// contains filtered or unexported fields
}

GraphicsRenderer 结构体用于绘制面部特征

func NewGraphicsRenderer added in v0.11.20

func NewGraphicsRenderer(ctx *gg.Context, dashOptions ...DashOptions) *GraphicsRenderer

NewGraphicsRenderer 创建一个新的 GraphicsRenderer 实例 @param ctx gg.Context 的指针,用于绘制操作 @param dashOptions @return *GraphicsRenderer 返回一个新的 GraphicsRenderer 实例

func (*GraphicsRenderer) DrawArc added in v0.11.21

func (g *GraphicsRenderer) DrawArc(startPoint, endPoint *gg.Point, radius float64, angleStart, angleExtent float64)

DrawArc 绘制一条弧线 @param startPoint 起始点的X坐标/起始点的Y坐标 @param endPoint 结束点的X坐标/结束点的Y坐标 @param radius 圆的半径 @param angleStart 起始角度(以度为单位) @param angleExtent 角度范围(以度为单位)

func (*GraphicsRenderer) DrawCenteredMultiLine added in v0.11.20

func (g *GraphicsRenderer) DrawCenteredMultiLine(startXs, endXs, startYs, endYs []float64, textGroups [][]string, angle float64, drawDashed bool, lineSpacing ...float64)

DrawCenteredMultiLine 在多个指定的坐标区间内绘制多组文本 @param startXs 文本起始X坐标数组 @param endXs 文本结束X坐标数组 @param startYs 文本起始Y坐标数组 @param endYs 文本结束Y坐标数组 @param textGroups 文本内容的二维数组 @param angle 旋转角度 @param drawDashed 是否绘制虚线 @param lineSpacing 行间距(可选)

func (*GraphicsRenderer) DrawCircle added in v0.11.20

func (g *GraphicsRenderer) DrawCircle(centerX, centerY, radius float64)

DrawCircle 绘制一个圆形 @param centerX 圆心的X坐标 @param centerY 圆心的Y坐标 @param radius 圆的半径

func (*GraphicsRenderer) DrawCurvedLine added in v0.11.20

func (g *GraphicsRenderer) DrawCurvedLine(start, end, control *gg.Point)

DrawCurvedLine 绘制带有弯曲度的线条 @param start 起始点 @param end 结束点 @param control 控制点

func (*GraphicsRenderer) DrawEllipse added in v0.11.20

func (g *GraphicsRenderer) DrawEllipse(centerX, centerY, width, height float64)

DrawEllipse 绘制一个椭圆 @param centerX 椭圆中心的X坐标 @param centerY 椭圆中心的Y坐标 @param width 椭圆的宽度 @param height 椭圆的高度

func (*GraphicsRenderer) DrawHorizontalLine added in v0.11.20

func (g *GraphicsRenderer) DrawHorizontalLine(y float64, left, right float64)

DrawHorizontalLine 从面部左侧到右侧绘制横线 @param y 横线的Y坐标 @param left 横线的左侧X坐标 @param right 横线的右侧X坐标

func (*GraphicsRenderer) DrawLine added in v0.11.20

func (g *GraphicsRenderer) DrawLine(startPoint, endPoint *gg.Point)

DrawLine 绘制从 startPoint 到 endPoint 的线条。 startPoint 和 endPoint: 线条的起始和结束点。

func (*GraphicsRenderer) DrawLineXYLineWidth added in v0.11.21

func (g *GraphicsRenderer) DrawLineXYLineWidth(startX, startY, endX, endY float64)

DrawLineXYLineWidth 绘制线条 @param startX 起始X坐标 @param startY 起始Y坐标 @param endX 结束X坐标 @param endY 结束Y坐标 @param lineWidth 线条宽度

func (*GraphicsRenderer) DrawPolygon added in v0.11.20

func (g *GraphicsRenderer) DrawPolygon(points []gg.Point)

DrawPolygon 绘制一个多边形 @param points 多边形顶点的切片

func (*GraphicsRenderer) DrawRectangle added in v0.11.20

func (g *GraphicsRenderer) DrawRectangle(left, top, bottom, right *gg.Point)

DrawRectangle 绘制矩形框 @param left 矩形左上角的点 @param top 矩形左上角的点 @param bottom 矩形右下角的点 @param right 矩形右下角的点

func (*GraphicsRenderer) DrawTriangle added in v0.11.20

func (g *GraphicsRenderer) DrawTriangle(x1, y1, x2, y2, x3, y3 float64)

DrawTriangle 绘制一个三角形 @param x1 第一个顶点的X坐标 @param y1 第一个顶点的Y坐标 @param x2 第二个顶点的X坐标 @param y2 第二个顶点的Y坐标 @param x3 第三个顶点的X坐标 @param y3 第三个顶点的Y坐标

func (*GraphicsRenderer) DrawVerticalLine added in v0.11.20

func (g *GraphicsRenderer) DrawVerticalLine(x float64, top, bottom float64)

DrawVerticalLine 从面部顶部到底部绘制竖线 @param x 竖线的X坐标 @param top 竖线的顶部Y坐标 @param bottom 竖线的底部Y坐标

func (*GraphicsRenderer) DrawWithStroke added in v0.11.20

func (g *GraphicsRenderer) DrawWithStroke(drawFunc func(), isStroke bool)

DrawWithStroke 是一个通用的绘图函数,接受一个绘图操作的函数作为参数

func (*GraphicsRenderer) GetDashOptions added in v0.11.20

func (g *GraphicsRenderer) GetDashOptions() DashOptions

获取 DashOptions 的方法

func (*GraphicsRenderer) SaveImage added in v0.11.20

func (g *GraphicsRenderer) SaveImage(name string, quality int, imageFormat ImageFormat)

SaveImage 存储图片 @param name 文件名名称 @param quality 图片质量 @param imageFormat 图片类型 (目前仅支持PNG/JPG/JPEG)

func (*GraphicsRenderer) SetDashed added in v0.11.20

func (g *GraphicsRenderer) SetDashed(dashes ...float64)

SetDashed 设置是否使用虚线 @param dashes

func (*GraphicsRenderer) UseDefaultDashed added in v0.11.20

func (g *GraphicsRenderer) UseDefaultDashed()

UseDefaultDashed 使用默认虚线

func (*GraphicsRenderer) UseSolidLine added in v0.11.20

func (g *GraphicsRenderer) UseSolidLine()

UseSolidLine 使用实线

type HorizontalEdge added in v0.11.21

type HorizontalEdge struct {
	LeftMost  *gg.Point // 最左边的点,表示边的左端点
	RightMost *gg.Point // 最右边的点,表示边的右端点
}

HorizontalEdge 结构体表示一个水平边,包括最左边和最右边的点

type ImageFormat

type ImageFormat int

ImageFormat 定义图像格式类型

const (
	JPEG ImageFormat = iota
	JPG
	PNG
	GIF
)

定义支持的图像格式常量

func (ImageFormat) String

func (f ImageFormat) String() string

String 返回图像格式的字符串表示

type ImageLTRB added in v0.11.20

type ImageLTRB struct {
	Left   float64 // 左边界
	Top    float64 // 上边界
	Right  float64 // 右边界
	Bottom float64 // 下边界
}

ImageLTRB 表示图像的边界框

func GetLTRB added in v0.11.21

func GetLTRB(features map[string]gg.Point) ImageLTRB

GetLTRB 获取关键点各部分的点横纵坐标最大小值,即:left,top,right,bottom @param features 面部特征点的映射 @return ImageLTRB 返回包含边界信息的结构体

func (ImageLTRB) Center added in v0.11.20

func (ltrb ImageLTRB) Center() (float64, float64)

Center 返回边界框的中心点

func (ImageLTRB) Contains added in v0.11.20

func (ltrb ImageLTRB) Contains(x, y float64) bool

Contains 检查一个点是否在边界框内

func (ImageLTRB) Height added in v0.11.20

func (ltrb ImageLTRB) Height() float64

Height 计算边界框的高度

func (ImageLTRB) String added in v0.11.20

func (ltrb ImageLTRB) String() string

String 返回边界框的字符串表示

func (ImageLTRB) Width added in v0.11.20

func (ltrb ImageLTRB) Width() float64

Width 计算边界框的宽度

type PointMaxMin added in v0.11.21

type PointMaxMin int

定义最大值和最小值的模式

const (
	PointMax PointMaxMin = iota // 最大值模式
	PointMin                    // 最小值模式
)

type VerticalEdge added in v0.11.21

type VerticalEdge struct {
	Nadir  *gg.Point // 底点,表示边的下端点
	Vertex *gg.Point // 顶点,表示边的上端点
}

VerticalEdge 结构体表示一个垂直边,包括顶点和底点

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL