Content-Encoding: gzip implies a gz header. zlib.deflate just deflates and emits headerless data. Because creating a valid header requires the length of the content to be known, there's no stream filter in PHP to create a gz header.
To see Chrome decode your test image, use gzencode() or set Content-Encoding to deflate.
To see Chrome decode your test image, use gzencode() or set Content-Encoding to deflate.