golangで画像をトランスコードする方法

PHPz
リリース: 2023-04-23 16:14:48
オリジナル
1033 人が閲覧しました

Web 開発では、画像のトランスコーディングは非常に一般的な要件です。 Golang では、標準ライブラリの image および image/jpeg パッケージを使用して画像をトランスコードできます。

Golang では、image.Decoder を通じて画像を標準画像オブジェクトにデコードでき、image.Encoder を通じて標準画像オブジェクトを JPG、PNG、BMP などの必要な画像形式にエンコードできます。この記事では、例として JPEG 形式の画像を PNG 形式にトランスコードします。

まず、JPEG 形式で画像を読み取る必要があります。これは次のコードで実現できます:

file, err := os.Open("input.jpg")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

img, err := jpeg.Decode(file)
if err != nil {
    log.Fatal(err)
}
ログイン後にコピー

上記のコードでは、os.Open を使用して input という名前の画像を開きます。 .jpg 画像ファイルを開くことができない場合は、エラーがスローされます。次に、jpeg.Decode を使用してファイルを画像オブジェクト img にデコードします。デコードに失敗すると、エラーがスローされます。

次に、画像オブジェクトを PNG 形式の画像にエンコードする必要があります。次のように、image/png パッケージのエンコーダを使用してエンコードできます:

out, err := os.Create("output.png")
if err != nil {
    log.Fatal(err)
}
defer out.Close()

err = png.Encode(out, img)
if err != nil {
    log.Fatal(err)
}
ログイン後にコピー

上記のコードでは、os.Create を使用して、output.png という名前の PNG 形式の画像ファイルを作成します。 、エラーがスローされます。次に、png.Encode を使用して、イメージ オブジェクト img を PNG 形式のイメージにエンコードし、その結果を output.png に書き込みます。エンコードが失敗すると、エラーがスローされます。

上記のコードの完全な実装は次のとおりです:

package main

import (
    "image/jpeg"
    "image/png"
    "log"
    "os"
)

func main() {

    file, err := os.Open("input.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    img, err := jpeg.Decode(file)
    if err != nil {
        log.Fatal(err)
    }

    out, err := os.Create("output.png")
    if err != nil {
        log.Fatal(err)
    }
    defer out.Close()

    err = png.Encode(out, img)
    if err != nil {
        log.Fatal(err)
    }

    log.Println("Image conversion successful!")

}
ログイン後にコピー

上記のコードを実行すると、JPEG 形式の画像を PNG 形式の画像にトランスコードできます。トランスコーディングプロセス中にエラーを適切に処理する必要があり、ファイルと画像オブジェクトを使用した後は対応するリソースを閉じる必要があることに注意してください。

以上がgolangで画像をトランスコードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!