So zeichnen Sie mit Golang Grafiken und Formen auf Bildern
So verwenden Sie Golang zum Zeichnen von Grafiken und Formen auf Bildern
Zusammenfassung: In diesem Artikel wird beschrieben, wie Sie mit der Programmiersprache Golang Grafiken und Formen auf Bildern zeichnen. Wir zeigen anhand von Beispielcode, wie Sie die Bildverarbeitungsbibliothek von Golang verwenden, um verschiedene Arten von Grafiken und Formen zu erstellen.
Einführung:
In vielen Anwendungen müssen wir häufig Grafiken und Formen auf Bildern zeichnen, z. B. Linien, Rechtecke, Kreise usw. Golang bietet einige leistungsstarke Bildverarbeitungsbibliotheken, mit denen wir diese Funktionen einfach implementieren können.
In diesem Artikel werden wir hauptsächlich die Bild- und Zeichenpakete von Golang verwenden, um Grafiken und Formen auf Bildern zu zeichnen. Zuerst müssen wir die Go-Entwicklungsumgebung installieren und die Bild- und Zeichnungspakete importieren. Beginnen wir nun mit dem Schreiben von Code.
Codebeispiel:
package main import ( "image" "image/color" "image/draw" "image/png" "log" "os" ) func main() { // 创建一个新的图片,并设置宽高 width := 300 height := 200 img := image.NewRGBA(image.Rect(0, 0, width, height)) // 设置绘制的颜色和形状 red := color.RGBA{255, 0, 0, 255} // 设置为红色 blue := color.RGBA{0, 0, 255, 255} // 设置为蓝色 green := color.RGBA{0, 255, 0, 255} // 设置为绿色 yellow := color.RGBA{255, 255, 0, 255} // 设置为黄色 // 在图片上绘制直线 drawLine(img, 10, 10, width-10, height-10, red) // 在图片上绘制矩形 drawRectangle(img, 20, 20, width-20, height-20, blue) // 在图片上绘制圆形 drawCircle(img, width/2, height/2, 50, green) // 在图片上绘制椭圆形 drawEllipse(img, width/2, height/2, 100, 50, yellow) // 将图片保存为PNG文件 saveToPNG(img, "shapes.png") } // 在图片上绘制直线 func drawLine(img *image.RGBA, x1, y1, x2, y2 int, color color.RGBA) { drawLine := func(img *image.RGBA, x0, y0, x1, y1 int, color color.RGBA) { dx := abs(x1 - x0) dy := abs(y1 - y0) sx, sy := 0, 0 if x0 < x1 { sx = 1 } else { sx = -1 } if y0 < y1 { sy = 1 } else { sy = -1 } err := dx - dy for { img.Set(x0, y0, color) if x0 == x1 && y0 == y1 { break } e2 := 2 * err if e2 > -dy { err -= dy x0 += sx } if e2 < dx { err += dx y0 += sy } } } drawLine(img, x1, y1, x2, y2, color) } // 在图片上绘制矩形 func drawRectangle(img *image.RGBA, x1, y1, x2, y2 int, color color.RGBA) { draw.Draw(img, image.Rect(x1, y1, x2, y2), &image.Uniform{color}, image.ZP, draw.Src) } // 在图片上绘制圆形 func drawCircle(img *image.RGBA, x, y, r int, color color.RGBA) { for px := -r; px <= r; px++ { for py := -r; py <= r; py++ { if px*px+py*py <= r*r { img.Set(x+px, y+py, color) } } } } // 在图片上绘制椭圆形 func drawEllipse(img *image.RGBA, x, y, rx, ry int, color color.RGBA) { for px := -rx; px <= rx; px++ { for py := -ry; py <= ry; py++ { if (px*px)/(rx*rx)+(py*py)/(ry*ry) <= 1 { img.Set(x+px, y+py, color) } } } } // 将图片保存为PNG文件 func saveToPNG(img image.Image, filename string) { f, err := os.Create(filename) if err != nil { log.Fatal(err) } defer f.Close() err = png.Encode(f, img) if err != nil { log.Fatal(err) } } // 辅助函数:获取值的绝对值 func abs(x int) int { if x < 0 { return -x } return x }
Codeanalyse:
Der obige Code definiert eine Hauptfunktion, die hauptsächlich zum Realisieren des Zeichnens von Grafiken und Formen verwendet wird. Zuerst erstellen wir ein neues RGBA-Bildobjekt img und legen dessen Breite und Höhe fest. Anschließend haben wir einige Farbkonstanten definiert und diese Farbkonstanten zum Zeichnen von Linien, Rechtecken, Kreisen und Ovalen verwendet.
Die Funktion drawLine verwendet den Bresenham-Algorithmus, um eine gerade Linie zu zeichnen. Es akzeptiert die Koordinatenparameter und Farbparameter von zwei Punkten und zeichnet dann eine gerade Linie, die die beiden Punkte auf dem Bild verbindet.
Die Funktion drawRectangle verwendet die Draw-Funktion des Zeichenpakets, um ein Rechteck zu zeichnen. Es akzeptiert vier Koordinatenparameter und einen Farbparameter und zeichnet dann ein Rechteck auf dem Bild.
Die Funktion drawCircle verwendet zwei for-Schleifen, um einen Kreis zu zeichnen. Es akzeptiert einen Mittelpunktskoordinatenparameter, einen Radiusparameter und einen Farbparameter und zeichnet dann einen Kreis auf dem Bild.
Die Funktion drawEllipse verwendet zwei for-Schleifen, um eine Ellipse zu zeichnen. Es akzeptiert einen Mittelpunktskoordinatenparameter, zwei Radiusparameter und einen Farbparameter und zeichnet dann eine Ellipse auf das Bild. Mit der Funktion „saveToPNG“ wird das gezeichnete Bild als PNG-Datei gespeichert.
Abschließend rufen wir diese Funktionen auf, um Grafiken und Formen zu zeichnen, und speichern die gezeichneten Bilder als Formen.png-Dateien.
Zusammenfassung:
In diesem Artikel wird erläutert, wie Sie mit Golang Grafiken und Formen auf Bildern zeichnen. Wir haben die Bild- und Zeichenpakete von Golang verwendet, um Grafiken und Formzeichnungen zu implementieren, und anhand von Beispielcode demonstriert, wie diese Funktionen zum Zeichnen von Linien, Rechtecken, Kreisen und Ovalen verwendet werden. Durch das Lesen dieses Artikels können wir besser verstehen, wie die Bildverarbeitungsbibliothek von Golang verwendet wird, um die Funktion des Zeichnens von Grafiken und Formen auf Bildern zu erreichen.Das obige ist der detaillierte Inhalt vonSo zeichnen Sie mit Golang Grafiken und Formen auf Bildern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





OpenSSL bietet als Open -Source -Bibliothek, die in der sicheren Kommunikation weit verbreitet sind, Verschlüsselungsalgorithmen, Tasten und Zertifikatverwaltungsfunktionen. In seiner historischen Version sind jedoch einige Sicherheitslücken bekannt, von denen einige äußerst schädlich sind. Dieser Artikel konzentriert sich auf gemeinsame Schwachstellen und Antwortmaßnahmen für OpenSSL in Debian -Systemen. DebianopensL Bekannte Schwachstellen: OpenSSL hat mehrere schwerwiegende Schwachstellen erlebt, wie z. Ein Angreifer kann diese Sicherheitsanfälligkeit für nicht autorisierte Lesen sensibler Informationen auf dem Server verwenden, einschließlich Verschlüsselungsschlüssel usw.

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...

In diesem Artikel werden eine Vielzahl von Methoden und Tools eingeführt, um PostgreSQL -Datenbanken im Debian -System zu überwachen, um die Datenbankleistung vollständig zu erfassen. 1. verwenden Sie PostgreSQL, um die Überwachungsansicht zu erstellen. PostgreSQL selbst bietet mehrere Ansichten für die Überwachung von Datenbankaktivitäten: PG_STAT_ACTIVITY: Zeigt Datenbankaktivitäten in Echtzeit an, einschließlich Verbindungen, Abfragen, Transaktionen und anderen Informationen. PG_STAT_REPLIKATION: Monitore Replikationsstatus, insbesondere für Stream -Replikationscluster. PG_STAT_DATABASE: Bietet Datenbankstatistiken wie Datenbankgröße, Transaktionsausschüsse/Rollback -Zeiten und andere Schlüsselindikatoren. 2. Verwenden Sie das Log -Analyse -Tool PGBADG

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Wie kann man im Beegoorm -Framework die mit dem Modell zugeordnete Datenbank angeben? In vielen BeEGO -Projekten müssen mehrere Datenbanken gleichzeitig betrieben werden. Bei Verwendung von BeEGO ...
