Pre-scaling (critical fix): - Add pre-scaling to fit display dimensions (480x800) before dithering to prevent post-downsampling artifacts that destroy dithering patterns - Use fixed-point (16.16) math for sub-pixel accurate scaling - Implement area averaging for smooth downsampling Dithering improvements: - Add Atkinson dithering (75% error diffusion) for cleaner results - Add Floyd-Steinberg dithering option with serpentine scanning - Keep clustered-dot halftone and Bayer as compile-time options Image adjustments: - Add brightness, contrast, and gamma adjustments for better visibility - Adjust RGB to grayscale conversion (25-50-25) to reduce blue darkness Other changes: - Fix MCU block indexing bug for correct picojpeg buffer access - Pre-generate cover BMP when EPUB is loaded for faster sleep screen
16 lines
492 B
C++
16 lines
492 B
C++
#pragma once
|
|
|
|
#include <FS.h>
|
|
|
|
class ZipFile;
|
|
|
|
class JpegToBmpConverter {
|
|
static void writeBmpHeader(Print& bmpOut, int width, int height);
|
|
// [COMMENTED OUT] static uint8_t grayscaleTo2Bit(uint8_t grayscale, int x, int y);
|
|
static unsigned char jpegReadCallback(unsigned char* pBuf, unsigned char buf_size,
|
|
unsigned char* pBytes_actually_read, void* pCallback_data);
|
|
|
|
public:
|
|
static bool jpegFileToBmpStream(File& jpegFile, Print& bmpOut);
|
|
};
|