mirror of
https://github.com/talgo-cloud/bimg.git
synced 2026-03-13 09:20:29 -07:00
refactor. feat(test): add fixtures
This commit is contained in:
parent
125806e589
commit
03387b2fda
9 changed files with 82 additions and 15 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -1,3 +1,6 @@
|
||||||
/bimg
|
/bimg
|
||||||
/bundle
|
/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 |
BIN
fixtures/test.png
Normal file
BIN
fixtures/test.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 604 KiB |
BIN
fixtures/test.webp
Normal file
BIN
fixtures/test.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
|
|
@ -8,7 +8,7 @@ import (
|
||||||
|
|
||||||
func TestResize(t *testing.T) {
|
func TestResize(t *testing.T) {
|
||||||
options := Options{Width: 800, Height: 600, Crop: false, Rotate: 270}
|
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 {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
@ -24,11 +24,11 @@ func TestResize(t *testing.T) {
|
||||||
t.Errorf("Resize(imgData, %#v) error: %#v", options, err)
|
t.Errorf("Resize(imgData, %#v) error: %#v", options, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if DetermineType(newImg) != JPEG {
|
if DetermineImageType(newImg) != JPEG {
|
||||||
t.Fatal("Image is not 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 {
|
if err != nil {
|
||||||
t.Fatal("Cannot save the image")
|
t.Fatal("Cannot save the image")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
39
type.go
39
type.go
|
|
@ -1,14 +1,39 @@
|
||||||
package bimg
|
package bimg
|
||||||
|
|
||||||
const (
|
const (
|
||||||
UNKNOWN = "unknown"
|
UNKNOWN = iota
|
||||||
JPEG = "jpeg"
|
JPEG
|
||||||
WEBP = "webp"
|
WEBP
|
||||||
PNG = "png"
|
PNG
|
||||||
TIFF = "tiff"
|
TIFF
|
||||||
MAGICK = "magick"
|
MAGICK
|
||||||
)
|
)
|
||||||
|
|
||||||
func DetermineType(buf []byte) string {
|
func DetermineImageType(buf []byte) int {
|
||||||
return vipsImageType(buf)
|
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
|
||||||
|
}
|
||||||
|
|
|
||||||
8
vips.go
8
vips.go
|
|
@ -62,8 +62,6 @@ func vipsRead(buf []byte) (*C.struct__VipsImage, error) {
|
||||||
var image *C.struct__VipsImage
|
var image *C.struct__VipsImage
|
||||||
imageType := vipsImageType(buf)
|
imageType := vipsImageType(buf)
|
||||||
|
|
||||||
debug("Image format: %s", imageType)
|
|
||||||
|
|
||||||
if imageType == UNKNOWN {
|
if imageType == UNKNOWN {
|
||||||
return nil, errors.New("Input buffer contains unsupported image format")
|
return nil, errors.New("Input buffer contains unsupported image format")
|
||||||
}
|
}
|
||||||
|
|
@ -71,8 +69,10 @@ func vipsRead(buf []byte) (*C.struct__VipsImage, error) {
|
||||||
// feed it
|
// feed it
|
||||||
length := C.size_t(len(buf))
|
length := C.size_t(len(buf))
|
||||||
imageBuf := unsafe.Pointer(&buf[0])
|
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 {
|
if err != 0 {
|
||||||
return nil, vipsError()
|
return nil, vipsError()
|
||||||
}
|
}
|
||||||
|
|
@ -92,7 +92,7 @@ func vipsExtract(image *C.struct__VipsImage, left int, top int, width int, heigh
|
||||||
return buf, nil
|
return buf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func vipsImageType(buf []byte) string {
|
func vipsImageType(buf []byte) int {
|
||||||
imageType := UNKNOWN
|
imageType := UNKNOWN
|
||||||
|
|
||||||
length := C.size_t(len(buf))
|
length := C.size_t(len(buf))
|
||||||
|
|
|
||||||
39
vips.h
39
vips.h
|
|
@ -2,6 +2,24 @@
|
||||||
#include <vips/vips.h>
|
#include <vips/vips.h>
|
||||||
#include <vips/vips7compat.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
|
int
|
||||||
vips_affine_interpolator(VipsImage *in, VipsImage **out, double a, double b, double c, double d, VipsInterpolate *interpolator)
|
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);
|
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
|
int
|
||||||
vips_embed_extend(VipsImage *in, VipsImage **out, int left, int top, int width, int height, int extend)
|
vips_embed_extend(VipsImage *in, VipsImage **out, int left, int top, int width, int height, int extend)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue