From d208b12205fea2d9dc559387394562112412685d Mon Sep 17 00:00:00 2001 From: movsb Date: Fri, 19 Apr 2024 20:20:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=AD=E6=96=87=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=90=8D=E7=BC=A9=E6=94=BE=E4=B8=8D=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/modules/renderers/all_test.go | 9 +++++++- service/modules/renderers/markdown.go | 20 +++++++++--------- .../test_data/\344\270\255\346\226\207.jpg" | Bin 0 -> 36122 bytes 3 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 "service/modules/renderers/test_data/\344\270\255\346\226\207.jpg" diff --git a/service/modules/renderers/all_test.go b/service/modules/renderers/all_test.go index 6ea02924..40f42db4 100644 --- a/service/modules/renderers/all_test.go +++ b/service/modules/renderers/all_test.go @@ -49,6 +49,13 @@ func TestMarkdownAll(t *testing.T) { Markdown: `- ![avatar](test_data/avatar.jpg?scale=0.3)`, Html: ``, + }, + { + ID: 2.1, + Markdown: `- ![avatar](test_data/中文.jpg?scale=0.3)`, + Html: ``, }, { @@ -108,7 +115,7 @@ func TestMarkdownAll(t *testing.T) { } for _, tc := range cases { md := renderers.NewMarkdown(tc.Options...) - if tc.ID == 2 { + if tc.ID == 2.1 { log.Println(`debug`) } _, html, err := md.Render(tc.Markdown) diff --git a/service/modules/renderers/markdown.go b/service/modules/renderers/markdown.go index 5e943f73..ccd7e59f 100644 --- a/service/modules/renderers/markdown.go +++ b/service/modules/renderers/markdown.go @@ -12,6 +12,7 @@ import ( "log" "net/http" "net/url" + urlpkg "net/url" "os" "path/filepath" "strconv" @@ -281,7 +282,6 @@ func (me *_Markdown) renderImage(w util.BufWriter, source []byte, node ast.Node, w.WriteString(fmt.Sprintf(`class="%s"`, strings.Join(classes, " "))) } - updatedURL := url.String() // 看起来是文章内的相对链接? // 如果是的话,需要 resolve 到相对应的目录。 if !url.IsAbs() && !strings.HasPrefix(url.Path, `/`) && me.pathResolver != nil { @@ -291,11 +291,10 @@ func (me *_Markdown) renderImage(w util.BufWriter, source []byte, node ast.Node, // fallthrough } else { url.Path = pathRelative - updatedURL = url.String() } } - width, height := size(updatedURL) + width, height := size(url) if width > 0 && height > 0 { widthScaled, heightScaled := int(float64(width)*scale), int(float64(height)*scale) w.WriteString(fmt.Sprintf(` width=%d height=%d`, widthScaled, heightScaled)) @@ -319,16 +318,17 @@ func nodeToHTMLText(n ast.Node, source []byte) []byte { return buf.Bytes() } -func size(path string) (int, int) { +func size(url *urlpkg.URL) (int, int) { var fp io.ReadCloser - if strings.Contains(path, `://`) { - resp, err := http.Get(path) + switch strings.ToLower(url.Scheme) { + case `http`, `https`: + resp, err := http.Get(url.String()) if err != nil { panic(err) } fp = resp.Body - } else { - f, err := os.Open(path) + default: + f, err := os.Open(url.Path) if err != nil { // panic(err) return 0, 0 @@ -342,7 +342,7 @@ func size(path string) (int, int) { if _, err := sfp.Seek(0, io.SeekStart); err != nil { panic(err) } - if strings.EqualFold(filepath.Ext(path), `.svg`) { + if strings.EqualFold(filepath.Ext(url.Path), `.svg`) { type _SvgSize struct { Width string `xml:"width,attr"` Height string `xml:"height,attr"` @@ -365,7 +365,7 @@ func size(path string) (int, int) { // TODO 移除通过 @2x 类似的图片缩放支持。 for i := 1; i <= 10; i++ { scaleFmt := fmt.Sprintf(`@%dx.`, i) - if strings.Contains(filepath.Base(path), scaleFmt) { + if strings.Contains(filepath.Base(url.Path), scaleFmt) { width /= i height /= i break diff --git "a/service/modules/renderers/test_data/\344\270\255\346\226\207.jpg" "b/service/modules/renderers/test_data/\344\270\255\346\226\207.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..4b8b0f7067a81dd9241672b422c8600eef186202 GIT binary patch literal 36122 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 literal 0 HcmV?d00001