diff options
author | bptato <nincsnevem662@gmail.com> | 2024-10-09 22:54:15 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-10-09 23:03:15 +0200 |
commit | 6a4f818ccb37fb026371a37cc3fb5d6c7c292c56 (patch) | |
tree | 25ae06adff29f037fce6d9c4a3f5ec2d4c25025b | |
parent | bb58b0de4f0320fe3043059f8958322e6a402f42 (diff) | |
download | chawan-6a4f818ccb37fb026371a37cc3fb5d6c7c292c56.tar.gz |
resize: use srgb
since that's our input color space (Actually, mainstream browsers seem to use linear scaling nevertheless. But apparently that produces surprising results in some cases, and stbir can do srgb, so might as well use it.)
-rw-r--r-- | adapter/img/resize.nim | 10 | ||||
-rw-r--r-- | bonus/stbir2/stbir2.nim | 4 |
2 files changed, 7 insertions, 7 deletions
diff --git a/adapter/img/resize.nim b/adapter/img/resize.nim index bd3b8c9a..74ba2186 100644 --- a/adapter/img/resize.nim +++ b/adapter/img/resize.nim @@ -10,10 +10,10 @@ import utils/twtstr {.compile("stb_image_resize.c", "-O3").} {.push header: "stb_image_resize.h".} -proc stbir_resize_uint8(input_pixels: ptr uint8; +proc stbir_resize_uint8_srgb(input_pixels: ptr uint8; input_w, input_h, input_stride_in_bytes: cint; output_pixels: ptr uint8; - output_w, output_h, output_stride_in_bytes, num_channels: cint): cint - {.importc.} + output_w, output_h, output_stride_in_bytes, num_channels, alpha_channel, + flags: cint): cint {.importc.} {.pop.} proc die(s: string) {.noreturn.} = @@ -51,8 +51,8 @@ proc main() = die("Cha-Control: ConnectionError 1 failed to open i/o\n") dst.p[0] = uint8('\n') # for CGI enterNetworkSandbox() - doAssert stbir_resize_uint8(addr src.p[0], srcWidth, srcHeight, 0, - addr dst.p[1], dstWidth, dstHeight, 0, 4) == 1 + doAssert stbir_resize_uint8_srgb(addr src.p[0], srcWidth, srcHeight, 0, + addr dst.p[1], dstWidth, dstHeight, 0, 4, 3, 0) != 0 os.sendDataLoop(dst) deallocMem(src) deallocMem(dst) diff --git a/bonus/stbir2/stbir2.nim b/bonus/stbir2/stbir2.nim index 8de0f92b..8b143a97 100644 --- a/bonus/stbir2/stbir2.nim +++ b/bonus/stbir2/stbir2.nim @@ -10,7 +10,7 @@ import utils/twtstr {.compile("stb_image_resize2.c", "-O3").} {.push header: "stb_image_resize2.h".} -proc stbir_resize_uint8_linear(input_pixels: ptr uint8; +proc stbir_resize_uint8_srgb(input_pixels: ptr uint8; input_w, input_h, input_stride_in_bytes: cint; output_pixels: ptr uint8; output_w, output_h, output_stride_in_bytes, num_channels: cint): ptr char {.importc.} @@ -51,7 +51,7 @@ proc main() = die("Cha-Control: ConnectionError 1 failed to open i/o\n") dst.p[0] = uint8('\n') # for CGI enterNetworkSandbox() - doAssert stbir_resize_uint8_linear(addr src.p[0], srcWidth, srcHeight, + doAssert stbir_resize_uint8_srgb(addr src.p[0], srcWidth, srcHeight, 0, addr dst.p[1], dstWidth, dstHeight, 0, 4) != nil os.sendDataLoop(dst) deallocMem(src) |