image

package module
v0.0.15 Latest Latest
Warning

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

Go to latest
Published: Jul 5, 2022 License: MIT Imports: 12 Imported by: 0

README

go-image

go-image

  1. 通过图片文件或者视频文件,从该文件中生产jpg格式的图或者缩略图, 如果该文件为 非图片非视频,那么返回错误,提示不支持该文件类型.
  2. 前期支持 输入 常规的 图片,视频格式 ,对 HEIF(.heic)图片格式 暂时不考虑.

一般情况下 只要 opencv和FFMpeg 能够处理,这个地方就能处理。

支持的图片

暂时不支持的图片格式

  • HEIF(.heic) (后期版本)

支持的视频

不支持的视频

环境问题

这个地方推荐使用

CPU版本

docker pull gocv/opencv:4.5.4

gpu版本 cuda11, cuda10 需要根据 响应的 显卡环境来.


docker pull gocv/opencv:4.5.4-gpu-cuda-11
docker pull gocv/opencv:4.5.4-gpu-cuda-10

how to test in docker.

docker run -v /Users/apple/workspace_stariverpool/go-image:/Users/apple/workspace_stariverpool/go-image -it   gocv/opencv:4.5.4 bash

cd /Users/apple/workspace_stariverpool/go-image
go mod tidy

go test -v -run=TestImageAndSave  .

这个地方还得检查一下.

git tag -a v0.0.8
git commit 
git push
git push --tags

Documentation

Index

Constants

View Source
const (
	Min         = 800  // 最短一边是 200  原参数 200 ---> 800
	DefaultMax  = 1200 // 为  9:16 = 800:356
	DivideTimes = 4.0  // 最长一边/最短一边的 比例, 超过此比例,定义为 失调 4 倍定义为
)

Variables

View Source
var ErrFileNotExist = errors.New("the file or directory is not exist")

ErrFileNotExist is returned when the file(/directory) path is not exist

View Source
var ErrFilePathInvalid = errors.New("the file or directory path is invalid")

ErrFilePathInvalid is returned when the file path is invalid

View Source
var ErrGoCVGIF = errors.New("gif is error")
View Source
var ErrGoCVInner = errors.New("go cv lib is error")

ErrGoCVInner , for example, gocv inner error is returned when the file is heif format

View Source
var ErrIsNotFile = errors.New("err err err !!! this is not  file")

ErrIsNotFile this never happen , everything is file

View Source
var ErrNotSupportDirectory = errors.New("not support file directory")

ErrNotSupportDirectory is returned when the file is directory

View Source
var ErrNotSupportFile4Img = errors.New("can't get a pic from this type file")

ErrNotSupportFile4Img is returned when can't get a pic from the file, 比如 从 mp3文件里进行截图

View Source
var ErrNotSupportFileCheckMimetype = errors.New("not support file check mimetype") //  未支持的文件类型检查 [文件类型检查的时候失败]

ErrNotSupportFileCheckMimetype is returned when the file mimetype can't be checked

View Source
var ErrNotSupportFileImg = errors.New("not support file type img")

ErrNotSupportFileImg is returned when the file is checked but can't be treated

View Source
var ErrNotSupportFileVideo = errors.New("not support file type video")

ErrNotSupportFileVideo is returned when the file is checked but can't be treated

View Source
var ErrSave2Jpg = errors.New("save jpg file error")

ErrSave2Jpg , 保存文件出错了

Functions

func Close

func Close(f *FileResult)

func HeicConvert2jpg added in v0.0.2

func HeicConvert2jpg(fileIn string, fileOut string) error

func Resize

func Resize(src gocv.Mat, dst gocv.Mat)

图片缩放要求: 对于一般图片,比例没有非常失调的 情况下, 最短一边保持 200,另外一边保持常宽比例不变 对于特殊比例失调的图片,处理下 最短一遍也是 200, 最常一边 从中切图 (保持 长的部分为 9:16 的比例, 那么就是 356)

比例失调定义为 最大边/最短边 >= 4倍以上

1. 问题, 应该是 切图 而不是 缩放这个地方的 原始意图 需要修正一下 2. 因为 该方法调用之后,需要继续使用 dst ,所以这个地方 应该是 返回的 指针类型. FIXME 最小边为 800, 其他边等比缩放

func ResizeROI added in v0.0.2

func ResizeROI(src *gocv.Mat, dst *gocv.Mat)

1. ResizeROI 对特定区域进行 切片,而不是 全部进行缩略图 2. 该方法调用后,需要继续用到 dst, 所以需要用到指针 3. 其他的逻辑 跟 Resize 是一样的 FIXME 未测试通过 暂时不提交....

func Save2Jpg

func Save2Jpg(f *FileResult, thumbnailSaveFile string, coverSaveFile string) error

Save2Jpg 保存进文件

Types

type FileResult

type FileResult struct {
	SrcPath  string // 文件路径
	Mimetype string // 文件类型 这个地方就可以判断出该文件的类型是图片/视频/...
	//ThumbnailData []byte // 缩略图 的数据 有缩放操作 (图片和视频都有)  缩放的尺寸 (最大不超过120)
	//CoverData     []byte // 封面,没有缩放,原尺寸大小 用于视频播放前的预览 (只有视频才有)
	ThumbnailData    gocv.Mat // 缩略图 的数据 有缩放操作 (图片和视频都有)  缩放的尺寸 (最大不超过120)
	CoverData        gocv.Mat // 封面,没有缩放,原尺寸大小 用于视频播放前的预览 (只有视频才有)
	OutputDir        string   // 输出的文件目录  传入的参数
	ThumbnailImgPath string   // 缩略图 的数据 存放路径
	CoverImgPath     string   // 封面 的数据 存放路径

}

func Image

func Image(filePath string) (*FileResult, error)

func ImageAndSave

func ImageAndSave(fileInPath string, outputDir string) (*FileResult, error)

ImageAndSave 该方法结合了 Image 和 Save2Jpg ,调用者不需要关心内部使用细节 根据原始文件路径,在 输出目录下生成对应的 缩略图和封面图片

Jump to

Keyboard shortcuts

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