fix(art): preserve uncropped card art aspect ratio using fit=inside
All checks were successful
ESP32 Build & Release / build (push) Successful in 1m14s

This commit is contained in:
2026-09-12 18:57:22 +02:00
parent df08247f3f
commit 794ddc9b8f
3 changed files with 20 additions and 3 deletions

View File

@@ -421,8 +421,8 @@ static esp_err_t scryfall_do_fetch(const char *card_name, const char *uid)
char enc_img[512];
url_encode(image_url, enc_img, sizeof(enc_img));
char proxy_url[600];
/* wsrv.nl converts Scryfall's progressive JPEG to a lightweight 200x110 baseline JPEG */
snprintf(proxy_url, sizeof(proxy_url), "https://wsrv.nl/?url=%s&w=200&h=110&fit=cover&output=jpg", enc_img);
/* wsrv.nl converts Scryfall's progressive JPEG to a lightweight baseline JPEG preserving original aspect ratio */
snprintf(proxy_url, sizeof(proxy_url), "https://wsrv.nl/?url=%s&w=200&h=150&fit=inside&output=jpg", enc_img);
esp_err_t dl = http_download_file(proxy_url, jpg_path);
if (dl != ESP_OK) {
ESP_LOGW(TAG, "proxied image download failed, trying direct: %s", image_url);

View File

@@ -199,6 +199,23 @@ static bool load_art_crop(const char *uid)
return false;
}
/* Automatically purge legacy 200x110 cropped art and re-fetch with full uncropped aspect ratio */
if (out_info.width == 200 && out_info.height == 110 && wifi_manager_connected()) {
ESP_LOGI(TAG, "Purging legacy 200x110 cropped art: %s", jpg_path);
free(jpg_buf);
remove(jpg_path);
if (s_card_name[0] != '\0') {
scryfall_fetch_request(s_card_name, uid);
} else {
char *looked_up_name = NULL;
if (storage_manager_lookup_name(uid, &looked_up_name) == ESP_OK && looked_up_name != NULL) {
scryfall_fetch_request(looked_up_name, uid);
free(looked_up_name);
}
}
return false;
}
if (out_info.width > 240) {
cfg.out_scale = (out_info.width > 480) ? JPEG_IMAGE_SCALE_1_4 : JPEG_IMAGE_SCALE_1_2;
esp_jpeg_get_image_info(&cfg, &out_info);