fix average filter of first line

This commit is contained in:
Adam D. Ruppe 2025-05-27 12:51:52 -04:00
parent 5ed3b9957b
commit 71d4934605
1 changed files with 4 additions and 4 deletions

8
png.d
View File

@ -2109,11 +2109,11 @@ immutable(ubyte)[] unfilter(ubyte filterType, in ubyte[] data, in ubyte[] previo
return assumeUnique(arr); return assumeUnique(arr);
case 3: case 3:
auto arr = data.dup; auto arr = data.dup;
if(previousLine.length)
foreach(i; 0 .. arr.length) { foreach(i; 0 .. arr.length) {
auto prev = i < bpp ? 0 : arr[i - bpp]; auto left = i < bpp ? 0 : arr[i - bpp];
arr[i] += cast(ubyte) auto above = previousLine.length ? previousLine[i] : 0;
/*std.math.floor*/( cast(int) (prev + (previousLine.length ? previousLine[i] : 0)) / 2);
arr[i] += cast(ubyte) ((left + above) / 2);
} }
return assumeUnique(arr); return assumeUnique(arr);