瀏覽代碼

Fix build with vips < 8.5.0

DarthSim 7 年之前
父節點
當前提交
c052b1f2ae
共有 2 個文件被更改,包括 15 次插入1 次删除
  1. 1 1
      process.go
  2. 14 0
      vips.h

+ 1 - 1
process.go

@@ -376,7 +376,7 @@ func vipsSaveImage(img *C.struct__VipsImage, imgtype imageType) ([]byte, error)
 }
 
 func vipsImageHasAlpha(img *C.struct__VipsImage) bool {
-	return C.vips_image_hasalpha(img) > 0
+	return C.vips_image_hasalpha_go(img) > 0
 }
 
 func vipsPremultiply(img **C.struct__VipsImage) (C.VipsBandFormat, error) {

+ 14 - 0
vips.h

@@ -5,6 +5,9 @@
 #define VIPS_SUPPORT_SMARTCROP \
   (VIPS_MAJOR_VERSION > 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION >= 5))
 
+#define VIPS_SUPPORT_HASALPHA \
+  (VIPS_MAJOR_VERSION > 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION >= 5))
+
 #define VIPS_SUPPORT_GIF \
   VIPS_MAJOR_VERSION > 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION >= 3)
 
@@ -119,6 +122,17 @@ vips_band_format(VipsImage *in) {
   return in->BandFmt;
 }
 
+gboolean
+vips_image_hasalpha_go(VipsImage * in) {
+#if VIPS_SUPPORT_HASALPHA
+  return vips_image_hasalpha(in);
+#else
+  return( image->Bands == 2 ||
+		      (image->Bands == 4 && image->Type != VIPS_INTERPRETATION_CMYK) ||
+		      image->Bands > 4 );
+#endif
+}
+
 int
 vips_premultiply_go(VipsImage *in, VipsImage **out) {
   return vips_premultiply(in, out, NULL);