import lazily

This commit is contained in:
dwelle 2021-11-22 22:11:10 +01:00
parent bd953a6287
commit 6592517122
2 changed files with 12 additions and 6 deletions

View File

@ -1,10 +1,12 @@
import decodePng from "png-chunks-extract"; import extractPngChunks from "png-chunks-extract";
import tEXt from "png-chunk-text"; import tEXt from "png-chunk-text";
import encodePng from "png-chunks-encode"; import encodePng from "png-chunks-encode";
import { stringToBase64, encode, decode, base64ToString } from "./encode"; import { stringToBase64, encode, decode, base64ToString } from "./encode";
import { EXPORT_DATA_TYPES, MIME_TYPES } from "../constants"; import { EXPORT_DATA_TYPES, MIME_TYPES } from "../constants";
import { PngChunk } from "../types"; import { PngChunk } from "../types";
export { extractPngChunks };
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// PNG // PNG
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
@ -29,7 +31,9 @@ const blobToArrayBuffer = (blob: Blob): Promise<ArrayBuffer> => {
export const getTEXtChunk = async ( export const getTEXtChunk = async (
blob: Blob, blob: Blob,
): Promise<{ keyword: string; text: string } | null> => { ): Promise<{ keyword: string; text: string } | null> => {
const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob))); const chunks = extractPngChunks(
new Uint8Array(await blobToArrayBuffer(blob)),
);
const metadataChunk = chunks.find((chunk) => chunk.name === "tEXt"); const metadataChunk = chunks.find((chunk) => chunk.name === "tEXt");
if (metadataChunk) { if (metadataChunk) {
return tEXt.decode(metadataChunk.data); return tEXt.decode(metadataChunk.data);
@ -66,7 +70,9 @@ export const encodePngMetadata = async ({
blob: Blob; blob: Blob;
metadata: string; metadata: string;
}) => { }) => {
const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob))); const chunks = extractPngChunks(
new Uint8Array(await blobToArrayBuffer(blob)),
);
const metadataChunk = tEXt.encode( const metadataChunk = tEXt.encode(
MIME_TYPES.excalidraw, MIME_TYPES.excalidraw,

View File

@ -12,8 +12,6 @@ import {
FileId, FileId,
InitializedExcalidrawImageElement, InitializedExcalidrawImageElement,
} from "./types"; } from "./types";
import decodePng from "png-chunks-extract";
import { findPngChunk } from "../data/image";
export const loadHTMLImageElement = (dataURL: DataURL) => { export const loadHTMLImageElement = (dataURL: DataURL) => {
return new Promise<HTMLImageElement>((resolve, reject) => { return new Promise<HTMLImageElement>((resolve, reject) => {
@ -154,8 +152,10 @@ export const hasTransparentPixels = async (imageFile: Blob | File) => {
return false; return false;
} }
const { findPngChunk, extractPngChunks } = await import("../data/image");
const buffer = await imageFile.arrayBuffer(); const buffer = await imageFile.arrayBuffer();
const chunks = decodePng(new Uint8Array(buffer)); const chunks = extractPngChunks(new Uint8Array(buffer));
// early exit if tRNS not found and IHDR states no support for alpha // early exit if tRNS not found and IHDR states no support for alpha
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------