瀏覽代碼

Fixed agi imagelib cropping and resize api

tobychui 2 年之前
父節點
當前提交
02a3e6872c
共有 2 個文件被更改,包括 25 次插入17 次删除
  1. 24 17
      mod/agi/agi.image.go
  2. 1 0
      web/UnitTest/backend/imagelib.cropImage.js

+ 24 - 17
mod/agi/agi.image.go

@@ -275,16 +275,6 @@ func (g *Gateway) injectImageLibFunctions(vm *otto.Otto, u *user.User, scriptFsh
 			g.raiseError(err)
 			return otto.FalseValue()
 		}
-		destWritePath := rdest
-		var destCloserFunction func()
-		if destFsh.RequireBuffer {
-			destWritePath, destCloserFunction = g.getUserSpecificTempFilePath(u, rdest)
-			if err != nil {
-				g.raiseError(err)
-				return otto.FalseValue()
-			}
-			defer destCloserFunction()
-		}
 
 		//Try to read the source image
 		imageBytes, err := srcFshAbs.ReadFile(rsrc)
@@ -308,16 +298,33 @@ func (g *Gateway) injectImageLibFunctions(vm *otto.Otto, u *user.User, scriptFsh
 			Mode:   cutter.TopLeft,
 		})
 
-		//Create the new image
-		out, err := os.Create(destWritePath)
-		if err != nil {
-			g.raiseError(err)
-			return otto.FalseValue()
+		//Create the output file
+		var out arozfs.File
+		destWritePath := ""
+		if destFsh.RequireBuffer {
+			destWritePath, _ = g.getUserSpecificTempFilePath(u, rdest)
+
+			//Create the new image in buffer file
+			out, err = os.Create(destWritePath)
+			if err != nil {
+				g.raiseError(err)
+				return otto.FalseValue()
+			}
+			defer out.Close()
+
+		} else {
+			//Create the target file via FSA
+			out, err = destFsh.FileSystemAbstraction.Create(rdest)
+			if err != nil {
+				g.raiseError(err)
+				return otto.FalseValue()
+			}
+			defer out.Close()
 		}
 
-		if strings.ToLower(filepath.Ext(destWritePath)) == ".png" {
+		if strings.ToLower(filepath.Ext(rdest)) == ".png" {
 			png.Encode(out, croppedImg)
-		} else if strings.ToLower(filepath.Ext(destWritePath)) == ".jpg" {
+		} else if strings.ToLower(filepath.Ext(rdest)) == ".jpg" {
 			jpeg.Encode(out, croppedImg, nil)
 		} else {
 			g.raiseError(errors.New("Not supported format: Only support jpg or png"))

+ 1 - 0
web/UnitTest/backend/imagelib.cropImage.js

@@ -6,6 +6,7 @@
 */
 
 if (requirelib("imagelib")){
+    //if (imagelib.cropImage("ccns:/test.jpg", "user:/Desktop/ccns.jpg",100,100,200,200)){
     if (imagelib.cropImage("user:/Desktop/test.jpg", "user:/Desktop/out.jpg",100,100,200,200)){
         //Cropping suceed
         sendJSONResp(JSON.stringify("ok"))