MCPcopy Index your code
hub / github.com/docker/docker-agent / inlineImageFromBase64

Function inlineImageFromBase64

pkg/leantui/image.go:57–95  ·  view source on GitHub ↗
(name, mimeType, b64 string)

Source from the content-addressed store, hash-verified

55}
56
57func inlineImageFromBase64(name, mimeType, b64 string) (inlineImage, bool) {
58 if strings.TrimSpace(b64) == "" {
59 return inlineImage{}, false
60 }
61
62 data, err := base64.StdEncoding.DecodeString(b64)
63 if err != nil {
64 return inlineImage{}, false
65 }
66 if mimeType == "" {
67 mimeType = chat.DetectMimeTypeByContent(data)
68 }
69 if !chat.IsImageMimeType(mimeType) {
70 return inlineImage{}, false
71 }
72 if resized, err := chat.ResizeImage(data, mimeType); err == nil {
73 data = resized.Data
74 mimeType = resized.MimeType
75 }
76
77 img, _, err := image.Decode(bytes.NewReader(data))
78 if err != nil {
79 return inlineImage{}, false
80 }
81 bounds := img.Bounds()
82
83 var pngBuf bytes.Buffer
84 if err := png.Encode(&pngBuf, img); err != nil {
85 return inlineImage{}, false
86 }
87
88 return inlineImage{
89 name: name,
90 mime: mimeType,
91 pngData: pngBuf.Bytes(),
92 width: bounds.Dx(),
93 height: bounds.Dy(),
94 }, true
95}
96
97func renderInlineImage(img inlineImage, width int) []string {
98 if len(img.pngData) == 0 || img.width <= 0 || img.height <= 0 {

Calls 4

BytesMethod · 0.95
DetectMimeTypeByContentFunction · 0.92
IsImageMimeTypeFunction · 0.92
ResizeImageFunction · 0.92