gpt4 book ai didi

go - 如果给定两个像素值,例如 :- pt1(0, 0) 和 pt2(480, 240),我如何在 jpeg 上绘制一个填充的矩形框?

转载 作者:行者123 更新时间:2023-12-01 22:17:42 25 4
gpt4 key购买 nike

我想从 localdisk 打开一个 jpeg 文件并在 Go 中绘制一个填充的矩形框,如果我给出两个像素点值,如 pt1(0,0) 和 pt2(480, 240)

最佳答案

看看here .您需要从 JPEG 解码图像,将矩形中的像素设置为黑色,然后重新编码为 JPEG。

这是一个代码示例,如果图像与可执行文件位于同一文件夹中,并且您提供的路径类似于 myimg.jpg,则它可以工作。 :

package main

import (
"fmt"
"image"
"image/color"
"image/jpeg"
"log"
"os"
)

func main() {
err := addBlackRectangle("myimg.jpg", 500, 500, 1000, 1000)
if err != nil {
log.Fatal(err)
}
}

func addBlackRectangle(imgPath string, x1, y1, x2, y2 int) (err error) {
r, err := os.Open(imgPath)
if err != nil {
return
}
img, err := jpeg.Decode(r)
if err != nil {
return
}

rect1 := img.Bounds()
rect2 := image.Rect(x1, y1, x2, y2)

if !rect2.In(rect1) {
err = fmt.Errorf("error: rectangle outside image")
return
}

rgba := image.NewRGBA(rect1)
for x := rect1.Min.X; x <= rect1.Max.X; x++ {
for y := rect1.Min.Y; y <= rect1.Max.Y; y++ {
p := image.Pt(x, y)
if p.In(rect2) {
rgba.Set(x, y, color.Black)
} else {
rgba.Set(x, y, img.At(x, y))
}
}
}

outputFile := "rect-" + imgPath
w, err := os.Create(outputFile)
defer w.Close()

err = jpeg.Encode(w, rgba, nil)
return
}

关于go - 如果给定两个像素值,例如 :- pt1(0, 0) 和 pt2(480, 240),我如何在 jpeg 上绘制一个填充的矩形框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58333730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com