package main
import (
"fmt"
"github.com/disintegration/imaging"
"image"
"image/png"
"os"
"path"
"path/filepath"
"runtime"
)
//要使用Golang重置图片大小并保留透明通道,你可以使用第三方的图像处理库,如Go图像("github.com/disintegration/imaging")。
//以下是一个简单的示例代码,展示了如何使用该库调整图片大小并保留透明通道:
//请确保在运行此代码之前已安装所需的第三方库。你可以使用以下命令进行安装:
//
//go get -u github.com/disintegration/imaging
//这段代码将打开名为 "original.png" 的原始图片文件,并将其解码为图像对象。然后,它使用 imaging.Resize 函数调整图片大小,其中第一个参数是原始图像,第二个参数是目标宽度(在此示例中为200),而第三个参数设置为0表示按比例调整高度。最后,代码将调整后的图像保存为 "resized.png" 文件。
//
//请注意,此示例仅涵盖了调整图片大小并保留透明通道的基本内容。你可以根据需要添加其他功能和错误处理。
func main() {
//
executablePath, err := os.Executable()
if err != nil {
panic(err)
}
// 获取当前文件所在目录的路径
currentDir := filepath.Dir(executablePath)
fmt.Println("当前文件所在位置:", currentDir)
//
//
_, filename, _, _ := runtime.Caller(0)
fmt.Println("当前源代码文件路径:", filename)
//
//
currDir := path.Dir(filename)
fmt.Println("当前源代码文件所在目录:", currDir)
//
currPath, _ := os.Getwd()
originPath := path.Join(currPath, "test/resize_image/report-logo-3.png")
resizePath := path.Join(currPath, "test/resize_image/report-logo-3-resize.png")
// 打开原始图片文件
file, err := os.Open(originPath)
if err != nil {
panic(err)
}
defer file.Close()
// 解码原始图片
img, _, err := image.Decode(file)
if err != nil {
panic(err)
}
// 调整图片大小并保留透明通道
resizedImg := imaging.Resize(img, 200, 0, imaging.Lanczos)
// 创建新的输出文件
outputFile, err := os.Create(resizePath)
if err != nil {
panic(err)
}
defer outputFile.Close()
// 将调整后的图片保存为PNG文件格式
err = png.Encode(outputFile, resizedImg)
if err != nil {
panic(err)
}
}
Golang - 重置图片大小,并保留透明通道
于 2023-08-10 17:07:26 首次发布