其他
码区不大,创造神话,科目三杀进来了
前言
前言
视频转图片
视频转图片
官网下载地址:https://ffmpeg.org/download.html
ffmpeg -i 目标.mp4 -r 15 %3d.jpg
图片转 ASCII 字符集
图片转 ASCII 字符集
func processPixel(context *gg.Context, file *excelize.File, h, w int) {
//获取像素点颜色
pixelColor := context.Image().At(w, h)
r, g, b, _ := pixelColor.RGBA()
//获取像素点亮度值
pixelValue, _, _ := color.RGBToYCbCr(uint8(r/256), uint8(g/256), uint8(b/256))
asciiIndex := int((float64(pixelValue) / 255) * float64(len(asciiChars)-1))
asciiChar := string(asciiChars[asciiIndex])
weight := asciiWeights[asciiIndex]
fontColor := fmt.Sprintf("%02X%02X%02X", int(r/256), int(g/256), int(b/256))
result := strings.Repeat(asciiChar, int(weight))
cell := fmt.Sprintf("%s%d", columnIndexToExcelName(w), h+1)
file.SetCellValue(sheetName, cell, result)
style, _ := file.NewStyle(&excelize.Style{
Font: &excelize.Font{
Color: fontColor, //字体颜色
},
Border: []excelize.Border{}, //空切片无边框
})
file.SetCellStyle(sheetName, cell, cell, style)
}
在 RGB 色彩模型中,亮度的取值通常与颜色的亮度成正比。在这里,pixelValue 是从图像中提取的像素的亮度值。对于 RGB 色彩模型,可以通过以下公式将 RGB 值转换为亮度值:亮度值=0.299×R+0.587×G+0.114×B
这里,R、G、B 分别是像素的红、绿、蓝分量。这个公式是一种常见的计算灰度值的方法,其中每个颜色分量的权重反映了人眼对不同颜色的感知。在这种情况下,亮度值的范围通常是 [0, 255],其中 0 表示黑色,255 表示白色。
通常情况下,亮度值越大,表示像素的颜色越接近白色,亮度越小,表示颜色越接近黑色。在上述代码中,pixelValue 的值被归一化到范围 [0, 1],用于确定在 ASCII 字符集中选择哪个字符。
ASCII 字符集导入 Excel
ASCII 字符集导入 Excel
func imageToASCII(imagePath, outputExcel string) {
context, err := openAndResizeImage(imagePath, scaleFactor)
if err != nil {
fmt.Println(err)
return
}
//获取像素大小
imgWidth, imgHeight := context.Image().Bounds().Dx(), context.Image().Bounds().Dy()
file, _, err := createExcelFile()
if err != nil {
fmt.Println(err)
return
}
//设置单元格大小
setColumnWidths(file, imgWidth)
setRowHeights(file, imgHeight)
for h := 0; h < imgHeight; h++ {
wg.Add(1)
//并行处理每行像素点
go func(h int) {
defer wg.Done()
for w := 0; w < imgWidth; w++ {
processPixel(context, file, h, w)
}
}(h)
}
// 等待所有 goroutine 完成
wg.Wait()
// 保存 Excel 文件
if err := file.SaveAs(outputExcel); err != nil {
fmt.Println("Error saving Excel file:", err)
} else {
fmt.Println("Excel file saved")
}
}
运行示例
运行示例
以默认设置启动
通过命令行参数自定义运行
图片转视频
图片转视频
ffmpeg -r 15 -pattern_type glob -i '截屏*.png' video1.mp4
播放:ffplay video1.mp4
总结
总结
完整的源码:https://github.com/shimo-open/ascii-to-excel fogleman/gg官方文档:https://pkg.go.dev/github.com/fogleman/gg github地址:https://github.com/qax-os/excelize ffmpeg官网下载:https://ffmpeg.org/download.html
往期推荐
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦