123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package bimg
- import (
- "io/ioutil"
- "os"
- "path"
- "testing"
- )
- func TestVipsRead(t *testing.T) {
- files := []struct {
- name string
- expected ImageType
- }{
- {"test.jpg", JPEG},
- {"test.png", PNG},
- {"test.webp", WEBP},
- }
- for _, file := range files {
- image, imageType, _ := vipsRead(readImage(file.name))
- if image == nil {
- t.Fatal("Empty image")
- }
- if imageType != file.expected {
- t.Fatal("Invalid image type")
- }
- }
- }
- func TestVipsSave(t *testing.T) {
- types := [...]ImageType{JPEG, PNG, WEBP}
- for _, typ := range types {
- image, _, _ := vipsRead(readImage("test.jpg"))
- options := vipsSaveOptions{Quality: 95, Type: typ, StripMetadata: true}
- buf, err := vipsSave(image, options)
- if err != nil {
- t.Fatalf("Cannot save the image as '%v'", ImageTypes[typ])
- }
- if len(buf) == 0 {
- t.Fatalf("Empty saved '%v' image", ImageTypes[typ])
- }
- }
- }
- func TestVipsSaveTiff(t *testing.T) {
- if !IsTypeSupportedSave(TIFF) {
- t.Skipf("Format %#v is not supported", ImageTypes[TIFF])
- }
- image, _, _ := vipsRead(readImage("test.jpg"))
- options := vipsSaveOptions{Quality: 95, Type: TIFF}
- buf, _ := vipsSave(image, options)
- if len(buf) == 0 {
- t.Fatalf("Empty saved '%v' image", ImageTypes[TIFF])
- }
- }
- func TestVipsRotate(t *testing.T) {
- files := []struct {
- name string
- rotate Angle
- }{
- {"test.jpg", D90},
- {"test_square.jpg", D45},
- }
- for _, file := range files {
- image, _, _ := vipsRead(readImage(file.name))
- newImg, err := vipsRotate(image, file.rotate)
- if err != nil {
- t.Fatal("Cannot rotate the image")
- }
- buf, _ := vipsSave(newImg, vipsSaveOptions{Quality: 95})
- if len(buf) == 0 {
- t.Fatal("Empty image")
- }
- }
- }
- func TestVipsZoom(t *testing.T) {
- image, _, _ := vipsRead(readImage("test.jpg"))
- newImg, err := vipsZoom(image, 1)
- if err != nil {
- t.Fatal("Cannot save the image")
- }
- buf, _ := vipsSave(newImg, vipsSaveOptions{Quality: 95})
- if len(buf) == 0 {
- t.Fatal("Empty image")
- }
- }
- func TestVipsWatermark(t *testing.T) {
- image, _, _ := vipsRead(readImage("test.jpg"))
- watermark := Watermark{
- Text: "Copy me if you can",
- Font: "sans bold 12",
- Opacity: 0.5,
- Width: 200,
- DPI: 100,
- Margin: 100,
- Background: Color{255, 255, 255},
- }
- newImg, err := vipsWatermark(image, watermark)
- if err != nil {
- t.Errorf("Cannot add watermark: %s", err)
- }
- buf, _ := vipsSave(newImg, vipsSaveOptions{Quality: 95})
- if len(buf) == 0 {
- t.Fatal("Empty image")
- }
- }
- func TestVipsWatermarkWithImage(t *testing.T) {
- image, _, _ := vipsRead(readImage("test.jpg"))
- watermark := readImage("transparent.png")
- options := WatermarkImage{Left: 100, Top: 100, Opacity: 1.0, Buf: watermark}
- newImg, err := vipsDrawWatermark(image, options)
- if err != nil {
- t.Errorf("Cannot add watermark: %s", err)
- }
- buf, _ := vipsSave(newImg, vipsSaveOptions{Quality: 95})
- if len(buf) == 0 {
- t.Fatal("Empty image")
- }
- }
- func TestVipsImageType(t *testing.T) {
- imgType := vipsImageType(readImage("test.jpg"))
- if imgType != JPEG {
- t.Fatal("Invalid image type")
- }
- }
- func TestVipsImageTypeInvalid(t *testing.T) {
- imgType := vipsImageType([]byte("vip"))
- if imgType != UNKNOWN {
- t.Fatal("Invalid image type")
- }
- }
- func TestVipsMemory(t *testing.T) {
- mem := VipsMemory()
- if mem.Memory < 1024 {
- t.Fatal("Invalid memory")
- }
- if mem.Allocations == 0 {
- t.Fatal("Invalid memory allocations")
- }
- }
- func readImage(file string) []byte {
- img, _ := os.Open(path.Join("fixtures", file))
- buf, _ := ioutil.ReadAll(img)
- defer img.Close()
- return buf
- }
|