yorukot/superfile · error
image file too large: %d bytes
Error message
image file too large: %d bytes
What it means
ImagePreviewWithRenderer stats the image file before reading and enforces a 100MB hard limit to prevent loading enormous files into memory. This error reports the actual file size in bytes when it exceeds maxFileSize (100*1024*1024). Reading and decoding such files is refused by design.
Source
Thrown at src/pkg/file_preview/image_preview.go:147
)
if err == nil {
// Cache the successful result
p.cache.Set(getPreviewObjKey(path, dimensions, RendererANSI), preview)
}
return preview, "", err
}
// ImagePreviewWithRenderer generates an image preview using the specified renderer.
// Returns (render, rawTransmit, error).
func (p *ImagePreviewer) ImagePreviewWithRenderer(path string, maxWidth int, maxHeight int,
defaultBGColor string, renderer ImageRenderer, sideAreaWidth int) (string, string, error) {
info, err := os.Stat(path)
if err != nil {
return "", "", err
}
const maxFileSize = 100 * 1024 * 1024 // 100MB limit
if info.Size() > maxFileSize {
return "", "", fmt.Errorf("image file too large: %d bytes", info.Size())
}
data, err := os.ReadFile(path)
if err != nil {
return "", "", err
}
// Use the new image preparation pipeline
img, originalWidth, originalHeight, err := prepareImageForPreview(data)
if err != nil {
return "", "", err
}
switch renderer {
case RendererKitty:
result, err := p.renderWithKittyUsingTermCap(img, path, originalWidth,
originalHeight, maxWidth, maxHeight, sideAreaWidth)
if err != nil {View on GitHub (pinned to b72f550bc6)
Solutions
- Check os.Stat(path).Size() before calling and skip/show a placeholder for files > 100MB
- Generate a downscaled thumbnail with an external tool for very large images
- Filter the file listing to exclude files above a size threshold
- If legitimately needed, raise the limit in a fork — but beware memory use
Example fix
// before
out, raw, err := previewer.ImagePreview(largePath, w, h, bg, side)
// after
if info, err := os.Stat(largePath); err == nil && info.Size() > 100*1024*1024 {
return "[image too large to preview]", "", nil
}
out, raw, err := previewer.ImagePreview(largePath, w, h, bg, side) Defensive patterns
Strategy: validation
Validate before calling
info, err := os.Stat(path)
if err == nil && info.Size() > 100*1024*1024 { return ErrTooLarge } Try / catch
out, raw, err := previewer.ImagePreviewWithRenderer(path, w, h, bg, side, r)
if err != nil && strings.HasPrefix(err.Error(), "image file too large") {
return "[image exceeds 100MB preview limit]", "", nil
} Prevention
- Pre-screen file sizes in the file listing and hide preview for >100MB
- Generate thumbnails for large media instead of full previews
- Handle os.Stat errors separately from the size check
- Document the 100MB limit in user-facing help
When it happens
Trigger: Calling ImagePreview/ImagePreviewWithRenderer on an image whose os.Stat size is greater than 100MB (1073741824... exactly 104857600) bytes.
Common situations: Previewing large raw photos (e.g., uncompressed TIFFs, huge PNGs), scanned documents, or files in a downloads folder; accidentally pointing the previewer at a video or archive.
Understand the failure class
Background: "File too large" / "file size exceeds limit" errors: why libraries cap file sizes and how to fix them — this error's family across 46 libraries.
Related errors
- failed to get absolute path of the first path: %w
- failed to get absolute path of the second path: %w
- failed to get entry info: %w
- failed to open source file: %w
- failed to create destination file: %w
AI-assisted analysis of yorukot/superfile@b72f550bc6 (2026-09-01).
Data as JSON: /api/errors/4724f5291153c3a5.
Report an issue: GitHub.