

























@@ -1,3 +1,4 @@
1+// Deterministic image buffers for plugin SDK media tests.
12import { deflateSync } from "node:zlib";
23import { encodePngRgb, encodePngRgba } from "../../media/png-encode.js";
34@@ -9,6 +10,7 @@ type Rgba = {
910};
10111112const PNG_SIGNATURE = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
13+// Minimal valid JPEG used when tests only need container detection.
1214const TINY_JPEG = Buffer.from(
1315"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////2wBDAf//////////////////////////////////////////////////////////////////////////////////////wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAX/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAH/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAEFAqf/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oACAEDAQE/ASP/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oACAECAQE/ASP/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAY/Aqf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAE/IV//2gAMAwEAAgADAAAAEP/EFBQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QH//EFBQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QH//EFBABAQAAAAAAAAAAAAAAAAAAABD/2gAIAQEAAT8QH//Z",
1416"base64",
@@ -63,13 +65,15 @@ function fillSolidRgb(width: number, height: number, color: Rgba): Buffer {
6365return pixels;
6466}
656768+/** Create a solid-color PNG buffer, preserving alpha only when needed. */
6669export function createSolidPngBuffer(width: number, height: number, color: Rgba): Buffer {
6770if (color.a === undefined || color.a === 255) {
6871return encodePngRgb(fillSolidRgb(width, height, color), width, height);
6972}
7073return encodePngRgba(fillSolidRgba(width, height, color), width, height);
7174}
727576+/** Create a deterministic RGB PNG with varied pixel values. */
7377export function createNoisyPngBuffer(width: number, height: number): Buffer {
7478const rgba = createNoisyRgbaBuffer(width, height);
7579const rgb = Buffer.alloc(width * height * 3);
@@ -81,6 +85,7 @@ export function createNoisyPngBuffer(width: number, height: number): Buffer {
8185return encodePngRgb(rgb, width, height);
8286}
838788+/** Create a grayscale+alpha PNG for image paths that must handle non-RGB color types. */
8489export function createGrayscaleAlphaPngBuffer(width: number, height: number): Buffer {
8590const stride = width * 2;
8691const raw = Buffer.alloc((stride + 1) * height);
@@ -112,10 +117,12 @@ export function createGrayscaleAlphaPngBuffer(width: number, height: number): Bu
112117]);
113118}
114119120+/** Return a tiny valid JPEG fixture buffer. */
115121export function createTinyJpegBuffer(): Buffer {
116122return Buffer.from(TINY_JPEG);
117123}
118124125+/** Create deterministic RGBA pixels for encoder and media conversion tests. */
119126export function createNoisyRgbaBuffer(width: number, height: number): Buffer {
120127const pixels = Buffer.alloc(width * height * 4);
121128for (let offset = 0; offset < pixels.length; offset += 4) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。