mirror of
https://github.com/talgo-cloud/bimg.git
synced 2026-03-15 10:25:55 -07:00
vips: add a vips__gaussblur method
handle both < 7.41 and higher. Prior 7.41, vips_gaussblur took only a int param, the radius. The radius was then divided by 2.0 (min_ampl) in vips_gaussblur. After, you can now parameter the min_ampl and radius became sigma (and passed from an integer to a double).
This commit is contained in:
parent
0f31f20ded
commit
404cbf902f
3 changed files with 29 additions and 0 deletions
|
|
@ -91,6 +91,11 @@ type Watermark struct {
|
||||||
Background Color
|
Background Color
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GaussianBlur struct {
|
||||||
|
Sigma float64
|
||||||
|
MinAmpl float64
|
||||||
|
}
|
||||||
|
|
||||||
type Options struct {
|
type Options struct {
|
||||||
Height int
|
Height int
|
||||||
Width int
|
Width int
|
||||||
|
|
@ -117,4 +122,5 @@ type Options struct {
|
||||||
Type ImageType
|
Type ImageType
|
||||||
Interpolator Interpolator
|
Interpolator Interpolator
|
||||||
Interpretation Interpretation
|
Interpretation Interpretation
|
||||||
|
GaussianBlur GaussianBlur
|
||||||
}
|
}
|
||||||
|
|
|
||||||
11
vips.go
11
vips.go
|
|
@ -432,3 +432,14 @@ func boolToInt(b bool) int {
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func vipsGaussianBlur(image *C.VipsImage, o GaussianBlur) (*C.VipsImage, error) {
|
||||||
|
var out *C.VipsImage
|
||||||
|
defer C.g_object_unref(C.gpointer(image))
|
||||||
|
|
||||||
|
err := C.vips__gaussblur(image, &out, C.double(o.Sigma), C.double(o.MinAmpl))
|
||||||
|
if err != 0 {
|
||||||
|
return nil, catchVipsError()
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
|
||||||
12
vips.h
12
vips.h
|
|
@ -16,6 +16,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if (VIPS_MAJOR_VERSION == 7 && VIPS_MINOR_VERSION < 41)
|
#if (VIPS_MAJOR_VERSION == 7 && VIPS_MINOR_VERSION < 41)
|
||||||
|
/* we need math.h for ceil() in vips__gaussblur */
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
#define VIPS_ANGLE_D0 VIPS_ANGLE_0
|
#define VIPS_ANGLE_D0 VIPS_ANGLE_0
|
||||||
#define VIPS_ANGLE_D90 VIPS_ANGLE_90
|
#define VIPS_ANGLE_D90 VIPS_ANGLE_90
|
||||||
#define VIPS_ANGLE_D180 VIPS_ANGLE_180
|
#define VIPS_ANGLE_D180 VIPS_ANGLE_180
|
||||||
|
|
@ -321,3 +324,12 @@ vips_watermark(VipsImage *in, VipsImage **out, WatermarkTextOptions *to, Waterma
|
||||||
g_object_unref(base);
|
g_object_unref(base);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
vips__gaussblur(VipsImage *in, VipsImage **out, double sigma, double min_ampl) {
|
||||||
|
#if (VIPS_MAJOR_VERSION == 7 && VIPS_MINOR_VERSION < 41)
|
||||||
|
return vips_gaussblur(in, out, ceil(sigma), NULL);
|
||||||
|
#else
|
||||||
|
return vips_gaussblur(in, out, sigma, NULL, "min_ampl", min_ampl);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue