fix: eliminate diagonal dither pattern from display driver
Root cause: Panel_ED2208's epd_quality mode applies _dither_row_rgb_pair (diagonal bias pattern with dither=140) during _exec_transfer(). Since our ImagePipeline already does proper Floyd-Steinberg dithering, the driver's additional dithering was creating visible diagonal artifacts. Fix: setEpdMode(epd_fastest) selects _dither_row_none (clean nearest-color lookup, no spatial bias). On Panel_ED2208 this only affects the dither function — NOT refresh quality or waveform. Also: default dither_noise setting to OFF since error scatter was targeting the wrong layer (it made gradient areas fuzzier without fixing the real problem in the display driver). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -138,6 +138,51 @@ std::vector<String> ImmichClient::fetchRandomAssetIds(int count) {
|
||||
return ids;
|
||||
}
|
||||
|
||||
std::vector<RandomAsset> ImmichClient::fetchRandomAssets(int count) {
|
||||
std::vector<RandomAsset> assets;
|
||||
String url = buildUrl("/api/search/random");
|
||||
|
||||
JsonDocument reqDoc;
|
||||
reqDoc["size"] = count;
|
||||
reqDoc["type"] = "IMAGE";
|
||||
String body;
|
||||
serializeJson(reqDoc, body);
|
||||
|
||||
String response = httpPost(url, body);
|
||||
if (response.isEmpty()) return assets;
|
||||
|
||||
JsonDocument doc;
|
||||
DeserializationError err = deserializeJson(doc, response);
|
||||
if (err) return assets;
|
||||
|
||||
JsonArray arr = doc.as<JsonArray>();
|
||||
int skippedRaw = 0;
|
||||
for (JsonObject asset : arr) {
|
||||
String id = asset["id"].as<String>();
|
||||
if (id.length() == 0) continue;
|
||||
|
||||
String filename = asset["originalFileName"] | "";
|
||||
filename.toLowerCase();
|
||||
if (filename.endsWith(".dng") || filename.endsWith(".raw") ||
|
||||
filename.endsWith(".cr2") || filename.endsWith(".cr3") ||
|
||||
filename.endsWith(".nef") || filename.endsWith(".arw") ||
|
||||
filename.endsWith(".orf") || filename.endsWith(".rw2") ||
|
||||
filename.endsWith(".raf") || filename.endsWith(".srw")) {
|
||||
skippedRaw++;
|
||||
continue;
|
||||
}
|
||||
|
||||
RandomAsset ra;
|
||||
ra.id = id;
|
||||
ra.dateTime = asset["localDateTime"] | "";
|
||||
assets.push_back(ra);
|
||||
}
|
||||
|
||||
Serial.printf("[immich] Fetched %d random assets with dates (skipped %d RAW)\n",
|
||||
assets.size(), skippedRaw);
|
||||
return assets;
|
||||
}
|
||||
|
||||
std::vector<String> ImmichClient::fetchFavoriteAssetIds() {
|
||||
std::vector<String> ids;
|
||||
String url = buildUrl("/api/assets?isFavorite=true");
|
||||
|
||||
Reference in New Issue
Block a user