mirror of
https://github.com/talgo-cloud/bimg.git
synced 2026-03-14 18:05:55 -07:00
refactor(vips)
This commit is contained in:
parent
5d13fba8be
commit
a29fa25dfc
4 changed files with 22 additions and 9 deletions
|
|
@ -72,6 +72,8 @@ func Resize(buf []byte, o Options) ([]byte, error) {
|
||||||
residual = float64(shrink) / factor
|
residual = float64(shrink) / factor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug("Test %s, %s, %s", shrink, residual, factor)
|
||||||
|
|
||||||
// Zoom image if necessary
|
// Zoom image if necessary
|
||||||
image, err = zoomImage(image, o.Zoom)
|
image, err = zoomImage(image, o.Zoom)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,11 @@ func runBenchmarkResize(file string, o Options, b *testing.B) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BenchmarkRotateJpeg(b *testing.B) {
|
||||||
|
options := Options{Rotate: 180}
|
||||||
|
runBenchmarkResize("test.jpg", options, b)
|
||||||
|
}
|
||||||
|
|
||||||
func BenchmarkResizeLargeJpeg(b *testing.B) {
|
func BenchmarkResizeLargeJpeg(b *testing.B) {
|
||||||
options := Options{
|
options := Options{
|
||||||
Width: 800,
|
Width: 800,
|
||||||
|
|
|
||||||
10
vips.go
10
vips.go
|
|
@ -15,6 +15,11 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
maxCacheMem = 100 * 1024 * 1024
|
||||||
|
maxCacheSize = 500
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
m sync.Mutex
|
m sync.Mutex
|
||||||
initialized bool
|
initialized bool
|
||||||
|
|
@ -67,8 +72,9 @@ func Initialize() {
|
||||||
panic("unable to start vips!")
|
panic("unable to start vips!")
|
||||||
}
|
}
|
||||||
|
|
||||||
C.vips_cache_set_max_mem(100 * 1024 * 1024)
|
// Set libvips cache params
|
||||||
C.vips_cache_set_max(500)
|
C.vips_cache_set_max_mem(maxCacheMem)
|
||||||
|
C.vips_cache_set_max(maxCacheSize)
|
||||||
|
|
||||||
// Explicit concurrency limit to avoid thread-unsafe issues.
|
// Explicit concurrency limit to avoid thread-unsafe issues.
|
||||||
// See: https://github.com/jcupitt/libvips/issues/261#issuecomment-92850414
|
// See: https://github.com/jcupitt/libvips/issues/261#issuecomment-92850414
|
||||||
|
|
|
||||||
14
vips.h
14
vips.h
|
|
@ -56,7 +56,7 @@ vips_shrink_bridge(VipsImage *in, VipsImage **out, double xshrink, double yshrin
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
vips_rotate(VipsImage *in, VipsImage **buf, int angle)
|
vips_rotate(VipsImage *in, VipsImage **out, int angle)
|
||||||
{
|
{
|
||||||
int rotate = VIPS_ANGLE_D0;
|
int rotate = VIPS_ANGLE_D0;
|
||||||
|
|
||||||
|
|
@ -68,7 +68,7 @@ vips_rotate(VipsImage *in, VipsImage **buf, int angle)
|
||||||
rotate = VIPS_ANGLE_D270;
|
rotate = VIPS_ANGLE_D270;
|
||||||
}
|
}
|
||||||
|
|
||||||
return vips_rot(in, buf, rotate, NULL);
|
return vips_rot(in, out, rotate, NULL);
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
@ -158,16 +158,16 @@ vips_init_image(void *buf, size_t len, int imageType, VipsImage **out) {
|
||||||
int code = 1;
|
int code = 1;
|
||||||
|
|
||||||
if (imageType == JPEG) {
|
if (imageType == JPEG) {
|
||||||
code = vips_jpegload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
|
code = vips_jpegload_buffer(buf, len, out, "access", VIPS_ACCESS_RANDOM, NULL);
|
||||||
} else if (imageType == PNG) {
|
} else if (imageType == PNG) {
|
||||||
code = vips_pngload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
|
code = vips_pngload_buffer(buf, len, out, "access", VIPS_ACCESS_RANDOM, NULL);
|
||||||
} else if (imageType == WEBP) {
|
} else if (imageType == WEBP) {
|
||||||
code = vips_webpload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
|
code = vips_webpload_buffer(buf, len, out, "access", VIPS_ACCESS_RANDOM, NULL);
|
||||||
} else if (imageType == TIFF) {
|
} else if (imageType == TIFF) {
|
||||||
code = vips_tiffload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
|
code = vips_tiffload_buffer(buf, len, out, "access", VIPS_ACCESS_RANDOM, NULL);
|
||||||
#if (VIPS_MAJOR_VERSION >= 8)
|
#if (VIPS_MAJOR_VERSION >= 8)
|
||||||
} else if (imageType == MAGICK) {
|
} else if (imageType == MAGICK) {
|
||||||
code = vips_magickload_buffer(buf, len, out, "access", VIPS_ACCESS_SEQUENTIAL, NULL);
|
code = vips_magickload_buffer(buf, len, out, "access", VIPS_ACCESS_RANDOM, NULL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue