浏览代码

Merge pull request #70 from hassansin/master

Extracted format parsing to a separate public method
Grigory Dryapak 7 年之前
父节点
当前提交
79acd08cea
共有 1 个文件被更改,包括 23 次插入15 次删除
  1. 23 15
      helpers.go

+ 23 - 15
helpers.go

@@ -199,22 +199,10 @@ func Encode(w io.Writer, img image.Image, format Format, opts ...EncodeOption) e
 //	err := imaging.Save(img, "out.jpg", imaging.JPEGQuality(80))
 //
 func Save(img image.Image, filename string, opts ...EncodeOption) (err error) {
-	formats := map[string]Format{
-		".jpg":  JPEG,
-		".jpeg": JPEG,
-		".png":  PNG,
-		".tif":  TIFF,
-		".tiff": TIFF,
-		".bmp":  BMP,
-		".gif":  GIF,
-	}
-
-	ext := strings.ToLower(filepath.Ext(filename))
-	f, ok := formats[ext]
-	if !ok {
-		return ErrUnsupportedFormat
+	f, err := FormatFromFilename(filename)
+	if err != nil {
+		return err
 	}
-
 	file, err := fs.Create(filename)
 	if err != nil {
 		return err
@@ -278,3 +266,23 @@ func Clone(img image.Image) *image.NRGBA {
 	})
 	return dst
 }
+
+//FormatFromFilename parses image format from filename extension: "jpg" (or "jpeg"), "png", "gif", "tif" (or "tiff") and "bmp" are supported.
+func FormatFromFilename(filename string) (Format, error) {
+	formats := map[string]Format{
+		".jpg":  JPEG,
+		".jpeg": JPEG,
+		".png":  PNG,
+		".tif":  TIFF,
+		".tiff": TIFF,
+		".bmp":  BMP,
+		".gif":  GIF,
+	}
+
+	ext := strings.ToLower(filepath.Ext(filename))
+	f, ok := formats[ext]
+	if !ok {
+		return -1, ErrUnsupportedFormat
+	}
+	return f, nil
+}