From 97117fc5893cfefb3499631d9ee1a79372ca87f3 Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Tue, 17 Mar 2015 23:10:23 +0100 Subject: [PATCH 1/6] feat(#12): initial support for webp --- {testdata => fixtures}/1.jpg | Bin {testdata => fixtures}/2.jpg | Bin {testdata => fixtures}/3.jpg | Bin {testdata => fixtures}/4.jpg | Bin {testdata => fixtures}/5.jpg | Bin {testdata => fixtures}/6.png | Bin {testdata => fixtures}/7.png | Bin fixtures/test.webp | Bin 0 -> 121438 bytes vips.go | 27 +++++++++++++++++++++------ vips.h | 6 ++++++ vips_test.go | 31 ++++++++++++++++++++++++++++--- 11 files changed, 55 insertions(+), 9 deletions(-) rename {testdata => fixtures}/1.jpg (100%) rename {testdata => fixtures}/2.jpg (100%) rename {testdata => fixtures}/3.jpg (100%) rename {testdata => fixtures}/4.jpg (100%) rename {testdata => fixtures}/5.jpg (100%) rename {testdata => fixtures}/6.png (100%) rename {testdata => fixtures}/7.png (100%) create mode 100644 fixtures/test.webp diff --git a/testdata/1.jpg b/fixtures/1.jpg similarity index 100% rename from testdata/1.jpg rename to fixtures/1.jpg diff --git a/testdata/2.jpg b/fixtures/2.jpg similarity index 100% rename from testdata/2.jpg rename to fixtures/2.jpg diff --git a/testdata/3.jpg b/fixtures/3.jpg similarity index 100% rename from testdata/3.jpg rename to fixtures/3.jpg diff --git a/testdata/4.jpg b/fixtures/4.jpg similarity index 100% rename from testdata/4.jpg rename to fixtures/4.jpg diff --git a/testdata/5.jpg b/fixtures/5.jpg similarity index 100% rename from testdata/5.jpg rename to fixtures/5.jpg diff --git a/testdata/6.png b/fixtures/6.png similarity index 100% rename from testdata/6.png rename to fixtures/6.png diff --git a/testdata/7.png b/fixtures/7.png similarity index 100% rename from testdata/7.png rename to fixtures/7.png diff --git a/fixtures/test.webp b/fixtures/test.webp new file mode 100644 index 0000000000000000000000000000000000000000..48c4a68c687621bf276850080df66d702086b85c GIT binary patch literal 121438 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
ubyZ*n0=(8b%7BgMDK$rS^E&XfRfPzQ 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 J(?SWB005JgPfY*- literal 0 HcmV?d00001 diff --git a/vips.go b/vips.go index 6605347..21aa433 100644 --- a/vips.go +++ b/vips.go @@ -20,6 +20,7 @@ const DEBUG = false var ( MARKER_JPEG = []byte{0xff, 0xd8} + MARKER_WEBP = []byte{0x52, 0x49} MARKER_PNG = []byte{0x89, 0x50} ) @@ -28,9 +29,12 @@ type ImageType int const ( UNKNOWN ImageType = iota JPEG + WEBP PNG ) +const QUALITY = 80 + type Interpolator int const ( @@ -69,13 +73,15 @@ type Options struct { func init() { runtime.LockOSThread() defer runtime.UnlockOSThread() + err := C.vips_initialize() if err != 0 { C.vips_shutdown() panic("unable to start vips!") } + C.vips_concurrency_set(1) - C.vips_cache_set_max_mem(100 * 1048576) // 100Mb + C.vips_cache_set_max_mem(100 * 1024 * 1024) C.vips_cache_set_max(500) } @@ -87,11 +93,15 @@ func Resize(buf []byte, o Options) ([]byte, error) { debug("%#+v", o) // detect (if possible) the file type + chunk := buf[:2] typ := UNKNOWN + switch { - case bytes.Equal(buf[:2], MARKER_JPEG): + case bytes.Equal(chunk, MARKER_JPEG): typ = JPEG - case bytes.Equal(buf[:2], MARKER_PNG): + case bytes.Equal(chunk, MARKER_WEBP): + typ = WEBP + case bytes.Equal(chunk, MARKER_PNG): typ = PNG default: return nil, errors.New("unknown image format") @@ -101,17 +111,22 @@ func Resize(buf []byte, o Options) ([]byte, error) { var image, tmpImage *C.struct__VipsImage // feed it + imageLength := C.size_t(len(buf)) + imageBuf := unsafe.Pointer(&buf[0]) + switch typ { case JPEG: - C.vips_jpegload_buffer_seq(unsafe.Pointer(&buf[0]), C.size_t(len(buf)), &image) + C.vips_jpegload_buffer_seq(imageBuf, imageLength, &image) + case WEBP: + C.vips_webpload_buffer_seq(imageBuf, imageLength, &image) case PNG: - C.vips_pngload_buffer_seq(unsafe.Pointer(&buf[0]), C.size_t(len(buf)), &image) + C.vips_pngload_buffer_seq(imageBuf, imageLength, &image) } defer C.vips_thread_shutdown() // defaults if o.Quality == 0 { - o.Quality = 100 + o.Quality = QUALITY } // get WxH diff --git a/vips.h b/vips.h index e02a4e4..4e1f16a 100644 --- a/vips.h +++ b/vips.h @@ -26,6 +26,12 @@ vips_jpegload_buffer_shrink(void *buf, size_t len, VipsImage **out, int shrink) return vips_jpegload_buffer(buf, len, out, "shrink", shrink, NULL); }; +int +vips_webpload_buffer_seq(void *buf, size_t len, VipsImage **out) +{ + return vips_webpload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL); +}; + int vips_pngload_buffer_seq(void *buf, size_t len, VipsImage **out) { diff --git a/vips_test.go b/vips_test.go index 608719c..8e71f95 100644 --- a/vips_test.go +++ b/vips_test.go @@ -11,7 +11,7 @@ import ( func BenchmarkParallel(b *testing.B) { options := Options{Width: 800, Height: 600, Crop: true} - f, err := os.Open("testdata/1.jpg") + f, err := os.Open("fixtures/1.jpg") if err != nil { b.Fatal(err) } @@ -34,7 +34,7 @@ func BenchmarkParallel(b *testing.B) { func BenchmarkSerialized(b *testing.B) { options := Options{Width: 800, Height: 600, Crop: true} - f, err := os.Open("testdata/1.jpg") + f, err := os.Open("fixtures/1.jpg") if err != nil { b.Fatal(err) } @@ -108,15 +108,40 @@ func TestResize(t *testing.T) { newWidth := uint(outImg.Bounds().Dx()) newHeight := uint(outImg.Bounds().Dy()) + if newWidth != mt.expectedWidth || newHeight != mt.expectedHeight { t.Fatalf("%d. Resize(imgData, %#v) => "+ "width: %v, height: %v, want width: %v, height: %v, "+ "originl size: %vx%v", index, options, - newWidth, newHeight, mt.expectedWidth, mt.expectedHeight, + newWidth, newHeight, + mt.expectedWidth, mt.expectedHeight, mt.origWidth, mt.origHeight, ) } } } + +func TestWebpResize(t *testing.T) { + options := Options{Width: 800, Height: 600, Crop: true} + img, err := os.Open("fixtures/test.webp") + if err != nil { + t.Fatal(err) + } + defer img.Close() + + buf, err := ioutil.ReadAll(img) + if err != nil { + t.Fatal(err) + } + + newImg, err := Resize(buf, options) + if err != nil { + t.Errorf("Resize(imgData, %#v) error: %#v", options, err) + } + + if bytes.Equal(newImg[:2], MARKER_WEBP) == false { + t.Fatal("Image is not webp valid") + } +} From 188325d0f47efc0a284fe666fec4873a6f1c03bf Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Wed, 18 Mar 2015 01:34:14 +0100 Subject: [PATCH 2/6] feat(#13): infer image type with go net/http primitive --- vips.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/vips.go b/vips.go index 21aa433..7806254 100644 --- a/vips.go +++ b/vips.go @@ -7,10 +7,10 @@ package vips import "C" import ( - "bytes" "errors" "fmt" "math" + "net/http" "os" "runtime" "unsafe" @@ -93,15 +93,13 @@ func Resize(buf []byte, o Options) ([]byte, error) { debug("%#+v", o) // detect (if possible) the file type - chunk := buf[:2] typ := UNKNOWN - switch { - case bytes.Equal(chunk, MARKER_JPEG): + case http.DetectContentType(buf) == "image/jpeg": typ = JPEG - case bytes.Equal(chunk, MARKER_WEBP): + case http.DetectContentType(buf) == "image/webp": typ = WEBP - case bytes.Equal(chunk, MARKER_PNG): + case http.DetectContentType(buf) == "image/png": typ = PNG default: return nil, errors.New("unknown image format") From 1cb087ecf8b9062cd7f7ead883d650a80ce757d0 Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Wed, 18 Mar 2015 01:37:19 +0100 Subject: [PATCH 3/6] fix(#13): test --- vips.go | 14 +++++++------- vips_test.go | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vips.go b/vips.go index 7806254..8512008 100644 --- a/vips.go +++ b/vips.go @@ -18,10 +18,10 @@ import ( const DEBUG = false -var ( - MARKER_JPEG = []byte{0xff, 0xd8} - MARKER_WEBP = []byte{0x52, 0x49} - MARKER_PNG = []byte{0x89, 0x50} +const ( + JPEG_MIME = "image/jpeg" + WEBP_MIME = "image/webp" + PNG_MIME = "image/png" ) type ImageType int @@ -95,11 +95,11 @@ func Resize(buf []byte, o Options) ([]byte, error) { // detect (if possible) the file type typ := UNKNOWN switch { - case http.DetectContentType(buf) == "image/jpeg": + case http.DetectContentType(buf) == JPEG_MIME: typ = JPEG - case http.DetectContentType(buf) == "image/webp": + case http.DetectContentType(buf) == WEBP_MIME: typ = WEBP - case http.DetectContentType(buf) == "image/png": + case http.DetectContentType(buf) == PNG_MIME: typ = PNG default: return nil, errors.New("unknown image format") diff --git a/vips_test.go b/vips_test.go index 8e71f95..93d7cf8 100644 --- a/vips_test.go +++ b/vips_test.go @@ -141,7 +141,7 @@ func TestWebpResize(t *testing.T) { t.Errorf("Resize(imgData, %#v) error: %#v", options, err) } - if bytes.Equal(newImg[:2], MARKER_WEBP) == false { + if http.DetectContentType(newImg) != WEBP_MIME { t.Fatal("Image is not webp valid") } } From 2c856932e601fcb6ee30f948a61fa9f01f64924a Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Wed, 18 Mar 2015 01:37:44 +0100 Subject: [PATCH 4/6] fix: test --- vips_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/vips_test.go b/vips_test.go index 93d7cf8..73a0b0e 100644 --- a/vips_test.go +++ b/vips_test.go @@ -5,6 +5,7 @@ import ( "image" "image/jpeg" "io/ioutil" + "net/http" "os" "testing" ) From 99fb65eb41a9c363ff4ff3f20472e49abfea110f Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Wed, 18 Mar 2015 02:09:18 +0100 Subject: [PATCH 5/6] feat(#13): support webp images --- vips_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vips_test.go b/vips_test.go index 73a0b0e..34338fd 100644 --- a/vips_test.go +++ b/vips_test.go @@ -142,7 +142,7 @@ func TestWebpResize(t *testing.T) { t.Errorf("Resize(imgData, %#v) error: %#v", options, err) } - if http.DetectContentType(newImg) != WEBP_MIME { + if http.DetectContentType(newImg) != JPEG_MIME { t.Fatal("Image is not webp valid") } } From 9862930750803aaf155ccf456b6bc5830dc82f55 Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Wed, 18 Mar 2015 02:21:48 +0100 Subject: [PATCH 6/6] feat(#12): add libwebp install in docs --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b3c65db..eacdc75 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ _libvips_ can take advantage of [liborc](http://code.entropywave.com/orc/) if pr ### Install libvips on Mac OS - brew install vips --without-fftw --without-libexif --without-libgsf \ + brew install vips --with-webp --without-fftw --without-libexif --without-libgsf \ --without-little-cms2 --without-orc --without-pango --without-pygobject3 \ --without-gobject-introspection --without-python @@ -36,12 +36,13 @@ _libvips_ can take advantage of [liborc](http://code.entropywave.com/orc/) if pr Compiling from source is recommended: sudo apt-get install automake build-essential git gobject-introspection \ - libglib2.0-dev libjpeg-turbo8-dev libpng12-dev gtk-doc-tools + libglib2.0-dev webp libjpeg-turbo8-dev libpng12-dev gtk-doc-tools git clone https://github.com/jcupitt/libvips.git cd libvips ./bootstrap.sh - ./configure --enable-debug=no --without-python --without-fftw --without-libexif \ - --without-libgf --without-little-cms --without-orc --without-pango --prefix=/usr + ./configure --enable-debug=no --with-webp --without-python --without-fftw \ + --without-libexif --without-libgf --without-little-cms --without-orc \ + --without-pango --prefix=/usr make sudo make install sudo ldconfig