package main
import (
"bytes"
"fmt"
"image"
_ "image/gif" // 支持GIF格式
_ "image/jpeg" // 支持JPEG格式
"image/png"
"os"
"time"
"golang.design/x/clipboard"
"golang.org/x/image/bmp"
)
func main() {
// 打开原始图片文件
file, err := os.Open("c2YMGngjQDqaKe4g5tLF0w.jpg")
if err != nil {
fmt.Println("Error opening image:", err)
return
}
defer file.Close()
// 解码图片,_表示我们不关心图片的具体格式
img, _, err := image.Decode(file)
if err != nil {
fmt.Println("Error decoding image:", err)
return
}
// 创建一个新文件来保存BMP格式的图片
outputFile, err := os.Create("output_image.bmp")
if err != nil {
fmt.Println("Error creating output file:", err)
return
}
defer outputFile.Close()
// 将图片编码为BMP格式并保存
err = bmp.Encode(outputFile, img)
if err != nil {
fmt.Println("Error encoding image to BMP:", err)
}
time.Sleep(time.Second)
// 初始化剪贴板
err = clipboard.Init()
if err != nil {
panic(err)
}
time.Sleep(time.Second)
// 打开图片文件
file, err = os.Open("output_image.bmp") // 替换为你的图片路径
if err != nil {
fmt.Println("打开文件失败:", err)
return
}
defer file.Close()
// 解析图片
img, _, err = image.Decode(file)
if err != nil {
fmt.Println("解析图片失败:", err)
return
}
// 将图片编码为 PNG 格式
var buf bytes.Buffer
err = png.Encode(&buf, img)
if err != nil {
fmt.Println("图片编码失败:", err)
return
}
// 将 PNG 编码后的图像字节数据复制到剪贴板
clipboard.Write(clipboard.FmtImage, buf.Bytes())
fmt.Println("图像数据已成功复制到剪贴板!")
}
注意 透明png图片在转换bmp的时候再粘贴会出现问题,笔者目前也不知道为什么。至于为什么要转换bmp格式是因为在处理一些特殊图片的时候会出现乱色的情况。注意!有些jpeg的图片也会转换失败,时间比较晚了,笔者研究出来会再更新的!