Golang - 重置图片大小,并保留透明通道

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,Golang,重置图片大小,透明通道)