mirror of
https://github.com/talgo-cloud/bimg.git
synced 2026-03-07 21:48:13 -08: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
|
||||
/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) {
|
||||
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")
|
||||
}
|
||||
|
|
|
|||
39
type.go
39
type.go
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
8
vips.go
8
vips.go
|
|
@ -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))
|
||||
|
|
|
|||
39
vips.h
39
vips.h
|
|
@ -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…
Add table
Add a link
Reference in a new issue