Golang は強力なプログラミング言語であり、その組み込みの画像処理ライブラリは、画像を処理する場合に特に役立つ多くの強力な関数を提供します。 Golang は、画像に対してさまざまな処理を実行できる非常に便利な画像変換ライブラリを提供します。その 1 つは画像の回転です。
多くのアプリケーション シナリオでは、撮影した写真にエラーがあったり、角度が見栄えが悪かったりすることが多く、写真を回転する必要があります。この場合、より良い結果を得るには、画像を特定の角度に回転する必要があります。写真を回転すると、画像がより美しく芸術的になり、写真家の芸術的レベルを反映するのに役立ちます。
それでは、Go で画像を回転するにはどうすればよいでしょうか? Golangの画像処理ライブラリを利用して動作させることができます。
まず、「image」パッケージと「image/draw」パッケージをインポートする必要があります。
import ( "image" "image/draw" )
次に、画像を開き、回転した画像を保存するための変数を定義する必要があります。
file, err := os.Open("example_image.png") if err != nil { log.Fatal(err) } defer file.Close() img, _, err := image.Decode(file) if err != nil { log.Fatal(err) } // 定义旋转后的图片 rotatedImg := image.NewRGBA(img.Bounds())
ここでは、画像ファイルを開きます。 image.Decode() 関数を通じてそれをデコードし、img 変数に保存します。次に、回転された画像を保存するために変数rotatedImgを定義する必要があります。 img.Bounds() を使用して新しい画像のサイズと形状を設定し、image.NewRGBA() に渡して新しい画像を作成します。
これで、画像の回転を開始できます。まず、回転角度を定義し、次にループを使用して画像の各ピクセルを走査し、新しい画像の対応する位置に描画する必要があります。
angle := 45.0 // 计算旋转前后的位置关系 rotatedImgRect := image.Rect(0, 0, img.Bounds().Dy(), img.Bounds().Dx()) rotation := draw.Quadrant(0) switch (int(angle) / 90) % 4 { case 0: rotation = draw.Quadrant(0) break case 1: rotation = draw.Quadrant(1) break case 2: rotation = draw.Quadrant(2) break case 3: rotation = draw.Quadrant(3) break } rotation = draw.RotateQuadrant(rotation, img.Bounds()) // 遍历图片的每一个像素并将其绘制到新图像上 for x := 0; x < rotatedImg.Bounds().Dx(); x++ { for y := 0; y < rotatedImg.Bounds().Dy(); y++ { // 计算旋转后的像素坐标 newX := float64(x)*math.Cos(angle) - float64(y)*math.Sin(angle) newY := float64(x)*math.Sin(angle) + float64(y)*math.Cos(angle) newX += float64(img.Bounds().Dx() - 1) newY += float64(img.Bounds().Dy() - 1) // 将旋转后的像素绘制到新图像上 draw.Draw(rotatedImg, rotatedImg.Bounds(), img, image.Point{X: int(newX), Y: int(newY)}, draw.Over) } }
コードのこの部分では、まず回転角度を定義します。ここでは例として 45 度を取り上げます。次に回転後の位置関係を計算しますが、これが非常に重要なステップです。 image.Rect() 関数を使用して、回転前の画像のサイズとは反対のサイズの新しい長方形領域を作成します。次に、draw.Quadrant() 関数を使用して Quadrant 変数を作成し、その値を 0 に初期化します。これは、画像を時計回りに 0 度回転することを意味します。この象限変数は、回転前の画像の領域と結合されて、新しい回転領域が生成されます。最後に、ユーティリティ関数draw.RotateQuadrant()を使用して象限を回転させ、指定した角度で画像を回転させます。
次に、ネストされた for ループを使用して、すべてのピクセルを反復処理します。回転されたピクセル座標を正しく取得するために、いくつかの数学的計算を実行します。まず、ピクセルの座標に cos 関数と sin 関数を乗算して、ピクセルの回転座標を計算します。次に、回転した各ピクセルの座標を最終イメージに追加し、ユーティリティ関数draw.Draw()を使用して新しいイメージに描画します。
最後に、回転した画像をディスクに保存できます。
rotatedImgFile, err := os.Create("rotated_image.png") if err != nil { log.Fatal(err) } defer rotatedImgFile.Close() png.Encode(rotatedImgFile, rotatedImg)
ここでは、os.Create() を使用して新しいファイルを開き、png.Encode() を使用して回転した画像をファイルに書き込みます。ローテーションが完了したら、ファイルやその他の開いているリソースを閉じる必要があります。
概要:
Golang は、画像を簡単に回転できる強力な画像処理ライブラリを多数提供しています。この記事では、Golangで画像を回転させて新しい画像ファイルとして保存する方法を紹介しました。プロジェクトで画像の回転処理も実行する必要がある場合は、Golang での画像の回転方法を試してみるとよいでしょう。
以上がGolang の画像の回転の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Golangは実際のアプリケーションに優れており、そのシンプルさ、効率性、並行性で知られています。 1)同時プログラミングはゴルチンとチャネルを通じて実装されます。2)柔軟なコードは、インターフェイスと多型を使用して記述されます。3)ネット/HTTPパッケージを使用したネットワークプログラミングを簡素化、4)効率的な同時クローラーを構築する、5)ツールと最高の実践を通じてデバッグと最適化。

GOのコア機能には、ガベージコレクション、静的リンク、並行性サポートが含まれます。 1. GO言語の並行性モデルは、GoroutineとChannelを通じて効率的な同時プログラミングを実現します。 2.インターフェイスと多型は、インターフェイスメソッドを介して実装されているため、異なるタイプを統一された方法で処理できます。 3.基本的な使用法は、関数定義と呼び出しの効率を示しています。 4。高度な使用法では、スライスは動的なサイズ変更の強力な機能を提供します。 5.人種条件などの一般的なエラーは、Getest Raceを通じて検出および解決できます。 6.パフォーマンス最適化Sync.Poolを通じてオブジェクトを再利用して、ゴミ収集圧力を軽減します。

GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

SQLクエリの結果の並べ替えについて混乱しています。 SQLを学習する過程で、しばしば混乱する問題に遭遇します。最近、著者は「Mick-SQL Basics」を読んでいます...

テクノロジースタックの収束とテクノロジーの選択の関係ソフトウェア開発におけるテクノロジーの選択、テクノロジースタックの選択と管理は非常に重要な問題です。最近、一部の読者が提案しています...

ゴーラン...

GO言語で3つの構造を比較および処理する方法。 GOプログラミングでは、2つの構造の違いを比較し、これらの違いを...

Goでグローバルにインストールされたパッケージを表示する方法は? GO言語で開発する過程で、GOはしばしば使用します...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
