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 ¶
- func CalculateControlPoint(start, end *gg.Point, offset float64) *gg.Point
- func CalculateFractionPoint(startPoint, endPoint *gg.Point, fraction float64, ...) *gg.Point
- func CalculateMultiplePoints(points []*gg.Point, mode PointMaxMin, axis AxisPointMode) *gg.Point
- func CalculatePoint(a, b *gg.Point, mode PointMaxMin, axis AxisPointMode) *gg.Point
- func CanFormTriangle(points []*gg.Point) (float64, bool, error)
- func EncodeImageToBase64(img image.Image, format ImageFormat, quality int) (string, error)
- func LoadImageFromFile(filePath string) (image.Image, error)
- func LoadImageFromFileAndEncodeToBase64(filePath string, format ImageFormat, quality int) (string, error)
- func LoadImageFromURL(url string) (image.Image, error)
- func ResizeDownTriangle(vertexA, vertexB, vertexC *gg.Point, resizeXy float64) (*gg.Point, *gg.Point)
- func ResizePoint(point *gg.Point, resizeX, resizeY float64) *gg.Point
- func ResizePoints(points []*gg.Point, scaleX, scaleY float64) []*gg.Point
- func ResizeUpTriangle(vertexA, vertexB, vertexC *gg.Point, resizeXy float64) (*gg.Point, *gg.Point)
- func ResizeX(point *gg.Point, scaleFactor float64) *gg.Point
- func ResizeY(point *gg.Point, scaleFactor float64) *gg.Point
- func SaveBufToImageFile(buf *bytes.Buffer, filePath string, format ImageFormat) error
- func UpdateBounds(x, y float64, left, top, right, bottom *float64)
- func WriterImage(img image.Image, quality int, format ImageFormat, output io.Writer) error
- func WriterImageFromBytes(data []byte, quality int, format ImageFormat, output io.Writer) error
- type AxisPointMode
- type CalculateFractionPointMode
- type Coordinates
- type DashOptions
- type DashStyle
- type GraphicsRenderer
- func (g *GraphicsRenderer) DrawArc(startPoint, endPoint *gg.Point, radius float64, ...)
- func (g *GraphicsRenderer) DrawCenteredMultiLine(startXs, endXs, startYs, endYs []float64, textGroups [][]string, angle float64, ...)
- func (g *GraphicsRenderer) DrawCircle(centerX, centerY, radius float64)
- func (g *GraphicsRenderer) DrawCurvedLine(start, end, control *gg.Point)
- func (g *GraphicsRenderer) DrawEllipse(centerX, centerY, width, height float64)
- func (g *GraphicsRenderer) DrawHorizontalLine(y float64, left, right float64)
- func (g *GraphicsRenderer) DrawLine(startPoint, endPoint *gg.Point)
- func (g *GraphicsRenderer) DrawLineXYLineWidth(startX, startY, endX, endY float64)
- func (g *GraphicsRenderer) DrawPolygon(points []gg.Point)
- func (g *GraphicsRenderer) DrawRectangle(left, top, bottom, right *gg.Point)
- func (g *GraphicsRenderer) DrawTriangle(x1, y1, x2, y2, x3, y3 float64)
- func (g *GraphicsRenderer) DrawVerticalLine(x float64, top, bottom float64)
- func (g *GraphicsRenderer) DrawWithStroke(drawFunc func(), isStroke bool)
- func (g *GraphicsRenderer) GetDashOptions() DashOptions
- func (g *GraphicsRenderer) SaveImage(name string, quality int, imageFormat ImageFormat)
- func (g *GraphicsRenderer) SetDashed(dashes ...float64)
- func (g *GraphicsRenderer) UseDefaultDashed()
- func (g *GraphicsRenderer) UseSolidLine()
- type HorizontalEdge
- type ImageFormat
- type ImageLTRB
- type PointMaxMin
- type VerticalEdge
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CalculateControlPoint ¶ added in v0.11.21
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 EncodeImageToBase64 ¶ added in v0.11.18
EncodeImageToBase64 将图像编码为 Base64 字符串
func LoadImageFromFile ¶ added in v0.11.18
LoadImageFromFile 从给定的文件路径加载图片并返回 image.Image 对象
func LoadImageFromFileAndEncodeToBase64 ¶ added in v0.11.18
func LoadImageFromFileAndEncodeToBase64(filePath string, format ImageFormat, quality int) (string, error)
LoadImageFromFileAndEncodeToBase64 从文件加载图片并返回 Base64 编码字符串
func LoadImageFromURL ¶
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
ResizePoint 单个坐标轴的等比例缩放
func ResizePoints ¶ added in v0.11.21
ResizePoints 批量缩放多个点,支持不同的 x 和 y 缩放因子 @param points: 需要缩放的点的切片 @param scaleX: x 轴的缩放因子 @param scaleY: y 轴的缩放因子 @return []*gg.Point: 返回缩放后的点的切片
func ResizeUpTriangle ¶ added in v0.11.21
ResizeUpTriangle 根据固定点放大三角形的两个顶点 @params vertexA: 固定点的坐标 @params vertexB: 需要放大的第一个点的坐标 @params vertexC: 需要放大的第二个点的坐标 @params resizeXy: 放大因子,值大于1表示放大 @return: 新的 vertexB 和 vertexC 的坐标
func SaveBufToImageFile ¶
func SaveBufToImageFile(buf *bytes.Buffer, filePath string, format ImageFormat) error
SaveBufToImageFile 将Buf数据保存到本地文件
func UpdateBounds ¶ added in v0.11.21
UpdateBounds 更新边界值 @param x 当前坐标的X值 @param y 当前坐标的Y值 @param left 左边界的指针 @param top 上边界的指针 @param right 右边界的指针 @param bottom 下边界的指针
func WriterImage ¶
WriterImage 将图像写入输出
func WriterImageFromBytes ¶
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 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 )
定义支持的图像格式常量
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
GetLTRB 获取关键点各部分的点横纵坐标最大小值,即:left,top,right,bottom @param features 面部特征点的映射 @return ImageLTRB 返回包含边界信息的结构体
type PointMaxMin ¶ added in v0.11.21
type PointMaxMin int
定义最大值和最小值的模式
const ( PointMax PointMaxMin = iota // 最大值模式 PointMin // 最小值模式 )