|
|
@ -29,16 +29,16 @@ type Media struct { |
|
|
|
Name string |
|
|
|
Name string |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (ms *MediaSource) ThumbMax(m Media, maxDim int) (string, error) { |
|
|
|
func (ms *MediaSource) ThumbMax(m Media, maxDim int) (string, int, int, error) { |
|
|
|
f, err := os.Open(ms.LocationOrig(m)) |
|
|
|
f, err := os.Open(ms.LocationOrig(m)) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
return "", 0, 0, err |
|
|
|
} |
|
|
|
} |
|
|
|
defer f.Close() |
|
|
|
defer f.Close() |
|
|
|
|
|
|
|
|
|
|
|
img, _, err := image.Decode(f) |
|
|
|
img, _, err := image.Decode(f) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
return "", 0, 0, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
rect := img.Bounds() |
|
|
|
rect := img.Bounds() |
|
|
@ -53,7 +53,8 @@ func (ms *MediaSource) ThumbMax(m Media, maxDim int) (string, error) { |
|
|
|
height = maxDim |
|
|
|
height = maxDim |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return ms.ThumbImage(img, m, width, height) |
|
|
|
src, err := ms.ThumbImage(img, m, width, height) |
|
|
|
|
|
|
|
return src, width, height, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (ms *MediaSource) ByName(name string) *Media { |
|
|
|
func (ms *MediaSource) ByName(name string) *Media { |
|
|
@ -128,7 +129,7 @@ func (ch *CaddyHugo) serveMediaPage(w http.ResponseWriter, r *http.Request) (int |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
io.WriteString(w, `<html> |
|
|
|
io.WriteString(w, `<html> |
|
|
|
<head><style>img { float: left; }</style></head> |
|
|
|
<head><style>.img { float: left; text-align: center; }</style></head> |
|
|
|
<body> |
|
|
|
<body> |
|
|
|
`) |
|
|
|
`) |
|
|
|
if ch.Media != nil { |
|
|
|
if ch.Media != nil { |
|
|
@ -139,12 +140,12 @@ func (ch *CaddyHugo) serveMediaPage(w http.ResponseWriter, r *http.Request) (int |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for _, m := range media { |
|
|
|
for _, m := range media { |
|
|
|
src, err := ch.Media.ThumbMax(*m, 100) |
|
|
|
src, width, height, err := ch.Media.ThumbMax(*m, 100) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
|
return 500, nil |
|
|
|
return 500, nil |
|
|
|
} |
|
|
|
} |
|
|
|
fmt.Fprintf(w, "<img src=%q />\n", src) |
|
|
|
fmt.Fprintf(w, `<div class="img"><img width=%d height=%d src=%q /><br /><input type="text" disabled value=%q /></div>`, width, height, src, src) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
io.WriteString(w, `</body><html>`) |
|
|
|
io.WriteString(w, `</body><html>`) |
|
|
@ -174,7 +175,7 @@ func (ch *CaddyHugo) serveMedia(w http.ResponseWriter, r *http.Request) (int, er |
|
|
|
return 400, nil |
|
|
|
return 400, nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
file, err = ch.Media.ThumbMax(*m, max) |
|
|
|
file, _, _, err = ch.Media.ThumbMax(*m, max) |
|
|
|
case 5: |
|
|
|
case 5: |
|
|
|
var width, height int |
|
|
|
var width, height int |
|
|
|
width, err = strconv.Atoi(segs[3]) |
|
|
|
width, err = strconv.Atoi(segs[3]) |
|
|
|