AI Newsletter Digest improvements: fixed QP soft line break decoding, URL extraction, and content cleaning
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
"""This is part of the MSS Python's module.
|
||||
Source: https://github.com/BoboTiG/python-mss.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import struct
|
||||
import zlib
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def to_png(data: bytes, size: tuple[int, int], /, *, level: int = 6, output: Path | str | None = None) -> bytes | None:
|
||||
"""Dump data to a PNG file. If `output` is `None`, create no file but return
|
||||
the whole PNG data.
|
||||
|
||||
:param bytes data: RGBRGB...RGB data.
|
||||
:param tuple size: The (width, height) pair.
|
||||
:param int level: PNG compression level.
|
||||
:param str output: Output file name.
|
||||
"""
|
||||
pack = struct.pack
|
||||
crc32 = zlib.crc32
|
||||
|
||||
width, height = size
|
||||
line = width * 3
|
||||
png_filter = pack(">B", 0)
|
||||
scanlines = b"".join([png_filter + data[y * line : y * line + line] for y in range(height)])
|
||||
|
||||
magic = pack(">8B", 137, 80, 78, 71, 13, 10, 26, 10)
|
||||
|
||||
# Header: size, marker, data, CRC32
|
||||
ihdr = [b"", b"IHDR", b"", b""]
|
||||
ihdr[2] = pack(">2I5B", width, height, 8, 2, 0, 0, 0)
|
||||
ihdr[3] = pack(">I", crc32(b"".join(ihdr[1:3])) & 0xFFFFFFFF)
|
||||
ihdr[0] = pack(">I", len(ihdr[2]))
|
||||
|
||||
# Data: size, marker, data, CRC32
|
||||
idat = [b"", b"IDAT", zlib.compress(scanlines, level), b""]
|
||||
idat[3] = pack(">I", crc32(b"".join(idat[1:3])) & 0xFFFFFFFF)
|
||||
idat[0] = pack(">I", len(idat[2]))
|
||||
|
||||
# Footer: size, marker, None, CRC32
|
||||
iend = [b"", b"IEND", b"", b""]
|
||||
iend[3] = pack(">I", crc32(iend[1]) & 0xFFFFFFFF)
|
||||
iend[0] = pack(">I", len(iend[2]))
|
||||
|
||||
if not output:
|
||||
# Returns raw bytes of the whole PNG data
|
||||
return magic + b"".join(ihdr + idat + iend)
|
||||
|
||||
with open(output, "wb") as fileh: # noqa: PTH123
|
||||
fileh.write(magic)
|
||||
fileh.write(b"".join(ihdr))
|
||||
fileh.write(b"".join(idat))
|
||||
fileh.write(b"".join(iend))
|
||||
|
||||
# Force write of file to disk
|
||||
fileh.flush()
|
||||
os.fsync(fileh.fileno())
|
||||
|
||||
return None
|
||||
Reference in New Issue
Block a user