Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara memangkas dan mengubah saiz imej menggunakan Golang

Cara memangkas dan mengubah saiz imej menggunakan Golang

王林
王林asal
2023-08-27 09:19:471224semak imbas

Cara memangkas dan mengubah saiz imej menggunakan Golang

Cara memangkas dan menskalakan imej menggunakan Golang

Pengenalan:
Dalam pembangunan web moden, pemprosesan imej adalah keperluan biasa. Sama ada memaparkan imej di tapak web, mencipta lakaran kenit atau memangkas imej yang dimuat naik oleh pengguna, pemprosesan imej adalah tugas yang penting. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Golang untuk memangkas dan mengubah saiz imej.

  1. Pasang perpustakaan yang diperlukan
    Sebelum kita mula, kita perlu memasang dua perpustakaan Golang berikut:
  2. github.com/nfnt/resize: untuk menskalakan imej. github.com/nfnt/resize: 用于缩放图片。
  3. github.com/disintegration/imaging: 用于裁剪图片。

可以使用以下命令进行安装:

go get github.com/nfnt/resize
go get github.com/disintegration/imaging
  1. 图片缩放
    图片缩放是指根据所需尺寸,等比例调整图片的大小。下面是一个示例代码,展示如何使用resize库进行图片缩放:

    package main
    
    import (
     "fmt"
     "image"
     "image/jpeg"
     "log"
     "os"
    
     "github.com/nfnt/resize"
    )
    
    func main() {
     file, err := os.Open("input.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer file.Close()
    
     // 使用jpeg.Decode函数解码JPEG文件
     img, err := jpeg.Decode(file)
     if err != nil {
         log.Fatal(err)
     }
    
     // 调整图片大小为指定尺寸
     resized := resize.Resize(300, 0, img, resize.Lanczos3)
    
     out, err := os.Create("output.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer out.Close()
    
     // 使用jpeg.Encode函数将调整大小后的图片保存为JPEG文件
     jpeg.Encode(out, resized, nil)
    
     fmt.Println("图片缩放完成")
    }

在上面的代码中,我们首先打开了一个名为input.jpg的JPEG文件,并使用jpeg.Decode函数解码该图片。然后,我们使用resize.Resize函数调整该图片的大小为300x自动计算的另一个尺寸,使用的是resize.Lanczos3算法进行调整。最后,我们使用jpeg.Encode函数将调整大小后的图片保存为名为output.jpg的JPEG文件。

  1. 图片裁剪
    图片裁剪是指根据所需位置和尺寸,裁剪出指定区域的图片。下面是一个示例代码,展示如何使用imaging库进行图片裁剪:

    package main
    
    import (
     "fmt"
     "image"
     "image/jpeg"
     "log"
     "os"
    
     "github.com/disintegration/imaging"
    )
    
    func main() {
     file, err := os.Open("input.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer file.Close()
    
     // 使用jpeg.Decode函数解码JPEG文件
     img, err := jpeg.Decode(file)
     if err != nil {
         log.Fatal(err)
     }
    
     // 裁剪图片
     cropped := imaging.Crop(img, image.Rect(100, 100, 400, 300))
    
     out, err := os.Create("output.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer out.Close()
    
     // 使用jpeg.Encode函数将裁剪后的图片保存为JPEG文件
     jpeg.Encode(out, cropped, nil)
    
     fmt.Println("图片裁剪完成")
    }

在上面的代码中,我们首先打开了一个名为input.jpg的JPEG文件,并使用jpeg.Decode函数解码该图片。然后,我们使用imaging.Crop函数根据给定的起始点和结束点坐标来裁剪该图片。最后,我们使用jpeg.Encode函数将裁剪后的图片保存为名为output.jpg的JPEG文件。

结论:
使用Golang进行图片处理是非常简单和高效的。通过使用resizeimaging

github.com/disintegration/imaging: digunakan untuk memangkas imej. 🎜🎜Anda boleh menggunakan arahan berikut untuk memasang: 🎜rrreee
    🎜🎜Penskalaan gambar🎜Penskalaan gambar merujuk kepada melaraskan saiz gambar secara berkadar mengikut saiz yang diperlukan. Berikut ialah contoh kod yang menunjukkan cara menggunakan perpustakaan resize untuk penskalaan imej: 🎜rrreee🎜
🎜Dalam kod di atas, kami mula-mula membuka fail bernama input.jpg fail JPEG dan gunakan fungsi <code>jpeg.Decode untuk menyahkod imej. Kemudian, kami menggunakan fungsi resize.Resize untuk mengubah saiz imej kepada 300x saiz lain yang dikira secara automatik, menggunakan algoritma resize.Lanczos3. Akhir sekali, kami menggunakan fungsi jpeg.Encode untuk menyimpan imej yang diubah saiz sebagai fail JPEG bernama output.jpg. 🎜
    🎜🎜Pemotongan gambar🎜Pemotongan gambar bermaksud memotong gambar di kawasan tertentu mengikut kedudukan dan saiz yang diperlukan. Di bawah ialah contoh kod yang menunjukkan cara menggunakan perpustakaan pengimejan
untuk pemangkasan imej: 🎜rrreee🎜🎜Dalam kod di atas, kami mula-mula membuka fail bernama input.jpg fail JPEG dan gunakan fungsi <code>jpeg.Decode untuk menyahkod imej. Kami kemudian menggunakan fungsi imaging.Crop untuk memangkas imej berdasarkan koordinat titik mula dan akhir yang diberikan. Akhir sekali, kami menggunakan fungsi jpeg.Encode untuk menyimpan imej yang dipangkas sebagai fail JPEG bernama output.jpg. 🎜🎜Kesimpulan:🎜Menggunakan Golang untuk pemprosesan imej adalah sangat mudah dan cekap. Dengan menggunakan pustaka resize dan imaging, kami boleh memangkas dan mengubah saiz imej dengan mudah. Saya harap artikel ini dapat memberi inspirasi kepada anda dan berguna dalam projek anda. 🎜

Atas ialah kandungan terperinci Cara memangkas dan mengubah saiz imej menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn