Documentation
¶
Index ¶
- Variables
- func EstimateCompressedSize(data []byte, quality int) int
- func GetBuffer() *bytes.Buffer
- func GetQualityName(quality int) string
- func IsBrotliCompressed(data []byte) bool
- func PutBuffer(buf *bytes.Buffer)
- type BrotliCompressor
- func (bc *BrotliCompressor) Compress(data []byte) ([]byte, error)
- func (bc *BrotliCompressor) CompressStream(reader io.Reader, writer io.Writer) error
- func (bc *BrotliCompressor) CompressWithMetadata(data []byte) (*CompressionResult, error)
- func (bc *BrotliCompressor) Decompress(data []byte) ([]byte, error)
- func (bc *BrotliCompressor) DecompressStream(reader io.Reader, writer io.Writer) error
- type BrotliConfig
- type BrotliFilter
- type CompareResult
- type CompressionComparison
- type CompressionResult
Constants ¶
This section is empty.
Variables ¶
var QualityNames = map[int]string{
0: "None (fastest)",
1: "Fast",
2: "Fast",
3: "Balanced",
4: "Balanced",
5: "Balanced",
6: "Good",
7: "Good",
8: "Best",
9: "Best",
10: "Maximum",
11: "Maximum (slowest)",
}
Quality names for display
Functions ¶
func EstimateCompressedSize ¶
EstimateCompressedSize estimates the compressed size without actually compressing This is a rough estimate based on content type
func GetQualityName ¶
GetQualityName returns human-readable quality name
func IsBrotliCompressed ¶
IsBrotliCompressed checks if data appears to be Brotli compressed Brotli doesn't have a standard magic number, but we can check some heuristics
Types ¶
type BrotliCompressor ¶
type BrotliCompressor struct {
// contains filtered or unexported fields
}
BrotliCompressor provides Brotli compression/decompression Brotli offers 2-4x better compression than gzip for text content and up to 82x for repetitive content (logs, structured data)
func NewBrotliCompressor ¶
func NewBrotliCompressor() *BrotliCompressor
NewBrotliCompressor creates a new Brotli compressor with default settings
func NewBrotliCompressorWithConfig ¶
func NewBrotliCompressorWithConfig(cfg BrotliConfig) *BrotliCompressor
NewBrotliCompressorWithConfig creates a compressor with custom config
func (*BrotliCompressor) Compress ¶
func (bc *BrotliCompressor) Compress(data []byte) ([]byte, error)
Compress compresses data using Brotli Returns compressed data and nil error on success
func (*BrotliCompressor) CompressStream ¶
CompressStream compresses data using streaming (for large content)
func (*BrotliCompressor) CompressWithMetadata ¶
func (bc *BrotliCompressor) CompressWithMetadata(data []byte) (*CompressionResult, error)
CompressWithMetadata compresses and returns metadata
func (*BrotliCompressor) Decompress ¶
func (bc *BrotliCompressor) Decompress(data []byte) ([]byte, error)
Decompress decompresses Brotli-compressed data
func (*BrotliCompressor) DecompressStream ¶
DecompressStream decompresses using streaming
type BrotliConfig ¶
type BrotliConfig struct {
// Quality is the compression level (0-11)
// 0 = no compression, 11 = best compression (slow)
// Default: 4 (good balance)
Quality int
// LGWin is the LZ77 window size
// 10-24, where 24 = 16MB window
// Default: 22 (4MB window)
LGWin int
// MinSize is the minimum content size to compress
// Content smaller than this won't be compressed
// Default: 100 bytes
MinSize int
// MaxSize is the maximum content size for single-pass compression
// Larger content will use streaming
// Default: 100MB
MaxSize int
}
BrotliConfig holds configuration for Brotli compression
func DefaultBrotliConfig ¶
func DefaultBrotliConfig() BrotliConfig
DefaultBrotliConfig returns default Brotli configuration
type BrotliFilter ¶
type BrotliFilter struct {
// contains filtered or unexported fields
}
BrotliFilter implements the filter.Layer interface for Brotli compression
func NewBrotliFilter ¶
func NewBrotliFilter() *BrotliFilter
NewBrotliFilter creates a new Brotli filter
func NewBrotliFilterWithConfig ¶
func NewBrotliFilterWithConfig(cfg BrotliConfig) *BrotliFilter
NewBrotliFilterWithConfig creates a filter with custom config
type CompareResult ¶
type CompareResult struct {
OriginalData []byte `json:"-"`
Algorithms []CompressionComparison `json:"algorithms"`
Winner string `json:"winner"`
BestRatio float64 `json:"best_ratio"`
}
CompareResult holds the full comparison
func CompareAlgorithms ¶
func CompareAlgorithms(data []byte) (*CompareResult, error)
CompareAlgorithms compares multiple compression algorithms
func (*CompareResult) PrintComparison ¶
func (cr *CompareResult) PrintComparison() string
PrintComparison prints a formatted comparison table
type CompressionComparison ¶
type CompressionComparison struct {
Algorithm string `json:"algorithm"`
OriginalSize int `json:"original_size"`
CompressedSize int `json:"compressed_size"`
CompressionRatio float64 `json:"compression_ratio"`
SpaceSaved int `json:"space_saved"`
Percentage float64 `json:"percentage"`
Duration time.Duration `json:"duration"`
Speed float64 `json:"speed_mbps"`
}
CompressionComparison holds comparison results between different algorithms
type CompressionResult ¶
type CompressionResult struct {
Algorithm string `json:"algorithm"`
OriginalSize int `json:"original_size"`
CompressedSize int `json:"compressed_size"`
CompressionRatio float64 `json:"compression_ratio"`
SpaceSaved int `json:"space_saved"`
WasCompressed bool `json:"was_compressed"`
Data []byte `json:"-"`
}
CompressionResult holds compression results
func (*CompressionResult) Percentage ¶
func (cr *CompressionResult) Percentage() float64
Percentage returns space saved as percentage
func (*CompressionResult) Summary ¶
func (cr *CompressionResult) Summary() string
Summary returns a human-readable summary