react-native-mask-segment-c.../dist/utils/pngImage.js

2 lines
7.3 KiB
JavaScript
Raw Permalink Normal View History

"use strict";var G=Object.create;var y=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var r in e)y(t,r,{get:e[r],enumerable:!0})},A=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of W(e))!j.call(t,o)&&o!==r&&y(t,o,{get:()=>e[o],enumerable:!(s=N(e,o))||s.enumerable});return t};var E=(t,e,r)=>(r=t!=null?G(z(t)):{},A(e||!t||!t.__esModule?y(r,"default",{value:t,enumerable:!0}):r,t)),J=t=>A(y({},"__esModule",{value:!0}),t);var ut={};H(ut,{PNG_COMPRESSION:()=>I,PNG_EXT:()=>m,clearDerivedImageCache:()=>Z,ensureMat8U:()=>O,ensurePngFile:()=>X,fileContentFingerprint:()=>S,isPngPath:()=>F,normalizePath:()=>d,pngCacheName:()=>Y,pngContentCacheKey:()=>R,prewarmPngBgrCache:()=>at,prewarmPngBgrCacheAsync:()=>it,readPngBgrBuffer:()=>_,readPngHeaderFromBase64:()=>D,resizeBgrBuffer:()=>ct,toPngFileName:()=>C,toSkiaUri:()=>L});module.exports=J(ut);var l=E(require("react-native-fs")),B=E(require("upng-js")),n=require("react-native-fast-opencv");const m=".png",I=0;function d(t){return t.startsWith("file://")?t.slice(7):t}function L(t){return t?t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:")||t.startsWith("file://")?t:`file://${d(t)}`:null}function C(t){const e=t.replace(/\.(jpe?g|webp|gif|bmp|heic|heif)$/i,"");return e.toLowerCase().endsWith(m)?e:`${e}${m}`}function F(t){return d(t).toLowerCase().endsWith(m)}function U(t){let e=5381;for(let r=0;r<t.length;r++)e=Math.imul(e,33)^t.charCodeAt(r);return(e>>>0).toString(16)}function K(t){return U(t)}async function S(t){const e=d(t),r=await l.default.stat(e);return U(`${r.size}:${r.mtime??r.ctime}`)}function q(t,e){const r=C(t).replace(/\.png$/i,"");return`${l.default.CachesDirectoryPath}/${r}_${e}${m}`}async function V(t,e){const r=C(t).replace(/\.png$/i,""),s=`${l.default.CachesDirectoryPath}/${C(t)}`,o=`${r}_`;s!==e&&await l.default.exists(s)&&await l.default.unlink(s);const c=await l.default.readDir(l.default.CachesDirectoryPath);for(const a of c)a.isFile()&&a.name.startsWith(o)&&a.name.endsWith(m)&&a.path!==e&&await l.default.unlink(a.path)}async function X(t,e){const r=d(t),s=await S(r),o=q(e,s);if(!await l.default.exists(r))throw new Error(`Image does not exist: ${r}`);if(r===o||await l.default.exists(o))return o;if(F(r))return await l.default.copyFile(r,o),await V(e,o),o;const c=await l.default.readFile(r,"base64"),a=n.OpenCV.base64ToMat(c);return n.OpenCV.saveMatToFile(a,o,"png",I),n.OpenCV.releaseBuffers([a.id]),await V(e,o),o}function Y(t,e){return`${e}_${K(d(t))}${m}`}const Q=["seg_lowfreq_","seg_highfreq_","imread_","img_","tmp_"];async function Z(){const t=await l.default.readDir(l.default.CachesDirectoryPath);let e=0;for(const r of t)!r.isFile()||!r.name.endsWith(m)||Q.some(s=>r.name.startsWith(s))&&(await l.default.unlink(r.path),e+=1);return e}const tt=7;function T(t){return t&tt}function et(t){return(t>>3)+1}function rt(t){switch(t){case 0:return 1;case 2:case 3:return 3;case 4:return 2;case 6:return 4;default:return 3}}function D(t){const e=t.slice(0,40),r=atob(e);function s(i){return(r.charCodeAt(i)<<24|r.charCodeAt(i+1)<<16|r.charCodeAt(i+2)<<8|r.charCodeAt(i+3))>>>0}const o=[137,80,78,71,13,10,26,10];for(let i=0;i<8;i++)if(r.charCodeAt(i)!==o[i])throw new Error("Invalid PNG file (signature mismatch)");const c=s(16),a=s(20),g=r.charCodeAt(24),u=r.charCodeAt(25);if(c===0||a===0)throw new Error(`Invalid PNG size: ${c}x${a}`);return{width:c,height:a,bitDepth:g,colorType:u}}function O(t,e){let r;try{r=n.OpenCV.toJSValue(t)}catch(h){if(!e)throw new Error(`OpenCV toJSValue failed (mat id=${t?.id??"unknown"}): ${h.message}`);const{width:f,height:p,bitDepth:w,colorType:b}=e,P=rt(b);if(w<=8)return{mat:t,extraReleaseIds:[]};const M=P===1?n.DataTypes.CV_8UC1:P===4?n.DataTypes.CV_8UC4:n.DataTypes.CV_8UC3,x=n.OpenCV.createObject(n.ObjectType.Mat,p,f,M),k=P>=3?1/257:255/65535;return n.OpenCV.invoke("convertTo",t,x,M,k,0),{mat:x,extraReleaseIds:[x.id]}}if(T(r.type)===n.DataTypes.CV_8U)return{mat:t,extraReleaseIds:[]};co