refactor. feat(test): add fixtures

master
Tomas Aparicio 11 years ago
parent 125806e589
commit 03387b2fda

5
.gitignore vendored

@ -1,3 +1,6 @@
/bimg
/bundle
bin
bin
/*.jpg
/*.png
/*.webp

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

@ -8,7 +8,7 @@ import (
func TestResize(t *testing.T) {
options := Options{Width: 800, Height: 600, Crop: false, Rotate: 270}
img, err := os.Open("fixtures/space.jpg")
img, err := os.Open("fixtures/test.jpg")
if err != nil {
t.Fatal(err)
}
@ -24,11 +24,11 @@ func TestResize(t *testing.T) {
t.Errorf("Resize(imgData, %#v) error: %#v", options, err)
}
if DetermineType(newImg) != JPEG {
if DetermineImageType(newImg) != JPEG {
t.Fatal("Image is not jpeg")
}
err = ioutil.WriteFile("fixtures/test.jpg", newImg, 0644)
err = ioutil.WriteFile("result.jpg", newImg, 0644)
if err != nil {
t.Fatal("Cannot save the image")
}

@ -1,14 +1,39 @@
package bimg
const (
UNKNOWN = "unknown"
JPEG = "jpeg"
WEBP = "webp"
PNG = "png"
TIFF = "tiff"
MAGICK = "magick"
UNKNOWN = iota
JPEG
WEBP
PNG
TIFF
MAGICK
)
func DetermineType(buf []byte) string {
func DetermineImageType(buf []byte) int {
return vipsImageType(buf)
}
func DetermineImageTypeName(buf []byte) string {
imageCode := vipsImageType(buf)
imageType := "unknown"
switch {
case imageCode == JPEG:
imageType = "jpeg"
break
case imageCode == WEBP:
imageType = "webp"
break
case imageCode == PNG:
imageType = "png"
break
case imageCode == TIFF:
imageType = "png"
break
case imageCode == MAGICK:
imageType = "magick"
break
}
return imageType
}

@ -62,8 +62,6 @@ func vipsRead(buf []byte) (*C.struct__VipsImage, error) {
var image *C.struct__VipsImage
imageType := vipsImageType(buf)
debug("Image format: %s", imageType)
if imageType == UNKNOWN {
return nil, errors.New("Input buffer contains unsupported image format")
}
@ -71,8 +69,10 @@ func vipsRead(buf []byte) (*C.struct__VipsImage, error) {
// feed it
length := C.size_t(len(buf))
imageBuf := unsafe.Pointer(&buf[0])
imageTypeC := C.int(imageType)
err := C.vips_jpegload_buffer_seq(imageBuf, length, &image)
err := C.vips_init_image(imageBuf, length, imageTypeC, &image)
//err := C.vips_jpegload_buffer_seq(imageBuf, length, &image)
if err != 0 {
return nil, vipsError()
}
@ -92,7 +92,7 @@ func vipsExtract(image *C.struct__VipsImage, left int, top int, width int, heigh
return buf, nil
}
func vipsImageType(buf []byte) string {
func vipsImageType(buf []byte) int {
imageType := UNKNOWN
length := C.size_t(len(buf))

@ -2,6 +2,24 @@
#include <vips/vips.h>
#include <vips/vips7compat.h>
enum types {
UNKNOWN = 0,
JPEG,
WEBP,
PNG,
TIFF,
MAGICK
};
/*
#define JPEG 0
#define WEBP "WEBP"
#define PNG "PNG"
#define TIFF "TIFF"
#define MAGICK "MAGICK"
#define UNKNOWN "UNKNOWN"
*/
int
vips_affine_interpolator(VipsImage *in, VipsImage **out, double a, double b, double c, double d, VipsInterpolate *interpolator)
{
@ -73,6 +91,27 @@ vips_rotate(VipsImage *in, VipsImage **buf, int angle)
return vips_rot(in, buf, rotate, NULL);
};
int
vips_init_image(void *buf, size_t len, int imageType, VipsImage **out) {
int code = 1;
if (imageType == JPEG) {
code = vips_jpegload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
} else if (imageType == PNG) {
code = vips_pngload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
} else if (imageType == WEBP) {
code = vips_webpload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
} else if (imageType == TIFF) {
code = vips_tiffload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
#if (VIPS_MAJOR_VERSION >= 8)
} else if (imageType == MAGICK) {
code = vips_magickload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
#endif
}
return code;
};
int
vips_embed_extend(VipsImage *in, VipsImage **out, int left, int top, int width, int height, int extend)
{

Loading…
Cancel
Save