react-native-mask-segment-c.../dist/utils/pngImage.js
a1518 8bc66a4ee9
Some checks failed
Publish to npm / publish (push) Has been cancelled
refactor: remove Chinese, add build obfuscation, polish README
- Remove all Chinese characters from src/, example/, ios/, patches/, tests/
- Add esbuild-based build obfuscation (minify + identifier mangle + no sourcemaps)
- Drop src/ from npm publish, only ship minified dist/
- Remove source maps and declaration maps from build output
- Add README icons and visual polish throughout
- Fix broken Table of Contents anchor links in README

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-01 19:07:32 -07:00

2 lines
7.3 KiB
JavaScript

"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:[]};const s=r.rows,o=r.cols,c=et(r.type),a=c===1?n.DataTypes.CV_8UC1:c===4?n.DataTypes.CV_8UC4:c===2?n.DataTypes.CV_8UC2:n.DataTypes.CV_8UC3,g=n.OpenCV.createObject(n.ObjectType.Mat,s,o,a),u=T(r.type);let i=1;return u===n.DataTypes.CV_16U||u===n.DataTypes.CV_16S?i=c>=3?1/257:255/65535:(u===n.DataTypes.CV_32F||u===n.DataTypes.CV_64F)&&(i=255),n.OpenCV.invoke("convertTo",t,g,a,i,0),{mat:g,extraReleaseIds:[g.id]}}function nt(t){const e=globalThis.atob;if(!e)throw new Error("JS PNG fallback: atob unavailable");const r=e(t),s=new Uint8Array(r.length);for(let f=0;f<r.length;f++)s[f]=r.charCodeAt(f);const o=B.default.decode(s),c=B.default.toRGBA8(o),a=new Uint8Array(c[0]),g=o.width,u=o.height,i=g*u,h=new Uint8Array(i*3);for(let f=0;f<i;f++){const p=f*4,w=f*3;h[w]=a[p+2],h[w+1]=a[p+1],h[w+2]=a[p]}return{buffer:h,cols:g,rows:u}}function ot(t){if(!t||t.length<8)return!1;try{const e=globalThis.atob;if(!e)return!1;const r=e(t.slice(0,12));return r.charCodeAt(0)===137&&r.charCodeAt(1)===80&&r.charCodeAt(2)===78&&r.charCodeAt(3)===71}catch{return!1}}function st(t){let e;try{e=n.OpenCV.base64ToMat(t)}catch(s){if(ot(t))try{return nt(t)}catch(o){throw new Error(`JS PNG fallback also failed (base64 length ${t?.length??0}): ${o.message}`)}throw new Error(`OpenCV base64ToMat failed (base64 length ${t?.length??0}): ${s.message}`)}if(!e||typeof e.id!="string"||!e.id)throw new Error(`OpenCV base64ToMat returned invalid Mat (base64 length ${t?.length??0})`);const r=[e.id];try{let s;try{s=D(t)}catch{}let o,c;try{const b=O(e,s);o=b.mat,c=b.extraReleaseIds}catch(b){throw new Error(`ensureMat8U failed: ${b.message}`)}r.push(...c);const a=n.OpenCV.toJSValue(o),g=a.cols,u=a.rows;let i=o;a.type===n.DataTypes.CV_8UC4?(i=n.OpenCV.createObject(n.ObjectType.Mat,u,g,n.DataTypes.CV_8UC3),r.push(i.id),n.OpenCV.invoke("cvtColor",o,i,n.ColorConversionCodes.COLOR_BGRA2BGR)):a.type===n.DataTypes.CV_8UC1&&(i=n.OpenCV.createObject(n.ObjectType.Mat,u,g,n.DataTypes.CV_8UC3),r.push(i.id),n.OpenCV.invoke("cvtColor",o,i,n.ColorConversionCodes.COLOR_GRAY2BGR));const h=n.OpenCV.invoke("clone",i);r.push(h.id);const{buffer:f,cols:p,rows:w}=n.OpenCV.matToBuffer(h,"uint8");return{buffer:new Uint8Array(f),cols:p,rows:w}}finally{n.OpenCV.releaseBuffers(r)}}const v=new Map,$=new Map;function at(t){for(const e of t){const r=d(e);_(r).catch(()=>{})}}async function it(t){await Promise.all(t.map(e=>_(d(e))))}async function R(t){const e=await l.default.stat(d(t));return`${e.size}:${e.mtime??e.ctime}`}async function _(t){const e=d(t),r=await R(e),s=v.get(r);if(s)return s;const o=$.get(r);if(o)return o;const c=(async()=>{if(!await l.default.exists(e))throw new Error(`Image file does not exist: ${e}`);const g=await l.default.stat(e);if(g.size===0)throw new Error(`Image file is empty (0 bytes): ${e}`);const u=await l.default.readFile(e,"base64");if(!u||u.length===0)throw new Error(`Read base64 is empty: ${e}`);let i;try{i=st(u)}catch(f){throw new Error(`PNG decode failed: ${e} (${g.size} bytes) - ${f.message}`)}const h={buffer:i.buffer,cols:i.cols,rows:i.rows};return v.set(r,h),h})();$.set(r,c);try{return await c}finally{$.delete(r)}}function ct(t,e,r,s,o){if(e===s&&r===o)return t;const c=new Uint8Array(s*o*3);for(let a=0;a<o;a++){const g=Math.min(r-1,Math.floor(a*r/o));for(let u=0;u<s;u++){const i=Math.min(e-1,Math.floor(u*e/s)),h=(g*e+i)*3,f=(a*s+u)*3;c[f]=t[h],c[f+1]=t[h+1],c[f+2]=t[h+2]}}return c}