@midscene/shared 1.11.0 → 1.11.1-beta-20260818123028.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/env/parse-model-config.mjs +1 -1
- package/dist/es/img/index.mjs +2 -2
- package/dist/es/img/transform.mjs +7 -1
- package/dist/lib/env/parse-model-config.js +1 -1
- package/dist/lib/img/index.js +6 -3
- package/dist/lib/img/transform.js +11 -2
- package/dist/types/img/index.d.ts +1 -1
- package/dist/types/img/transform.d.ts +7 -0
- package/package.json +1 -1
- package/src/img/index.ts +1 -0
- package/src/img/transform.ts +20 -0
|
@@ -5,7 +5,7 @@ import { assert } from "../utils.mjs";
|
|
|
5
5
|
import { maskConfig, parseJson } from "./helper.mjs";
|
|
6
6
|
import { initDebugConfig } from "./init-debug.mjs";
|
|
7
7
|
const MODEL_CONFIG_DOC_URL = 'https://midscenejs.com/model-common-config.html';
|
|
8
|
-
const getCurrentVersion = ()=>"1.11.0";
|
|
8
|
+
const getCurrentVersion = ()=>"1.11.1-beta-20260818123028.0";
|
|
9
9
|
const getInvalidModelFamilyMessage = (modelFamily)=>`Invalid MIDSCENE_MODEL_FAMILY value: ${modelFamily}. Current version v${getCurrentVersion()} accepts the following model families: ${MODEL_FAMILY_VALUES.join(', ')}. You can also visit ${MODEL_CONFIG_DOC_URL} for the latest configuration information.`;
|
|
10
10
|
const KEYS_MAP = {
|
|
11
11
|
insight: INSIGHT_MODEL_CONFIG_KEYS,
|
package/dist/es/img/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { imageInfoOfBase64, isValidImageBuffer, isValidJPEGImageBuffer, isValidPNGImageBuffer, validateScreenshotBuffer } from "./info.mjs";
|
|
2
|
-
import { convertImgBufferToJpeg, createImgBase64ByFormat, cropByRect, httpImg2Base64, inferBase64ImageFormat, localImg2Base64, normalizeBase64Image, normalizeScreenshotBase64, paddingToMatchBlockByBase64, parseBase64, preProcessImageUrl, resizeAndConvertImgBuffer, resizeImgBase64, saveBase64Image, scaleImage, zoomForGPT4o } from "./transform.mjs";
|
|
2
|
+
import { convertImgBufferToJpeg, convertPngBase64ToJpeg, createImgBase64ByFormat, cropByRect, httpImg2Base64, inferBase64ImageFormat, localImg2Base64, normalizeBase64Image, normalizeScreenshotBase64, paddingToMatchBlockByBase64, parseBase64, preProcessImageUrl, resizeAndConvertImgBuffer, resizeImgBase64, saveBase64Image, scaleImage, zoomForGPT4o } from "./transform.mjs";
|
|
3
3
|
import { annotateRects, compositeElementInfoImg, compositePointMarkerImg, processImageElementInfo } from "./box-select.mjs";
|
|
4
|
-
export { annotateRects, compositeElementInfoImg, compositePointMarkerImg, convertImgBufferToJpeg, createImgBase64ByFormat, cropByRect, httpImg2Base64, imageInfoOfBase64, inferBase64ImageFormat, isValidImageBuffer, isValidJPEGImageBuffer, isValidPNGImageBuffer, localImg2Base64, normalizeBase64Image, normalizeScreenshotBase64, paddingToMatchBlockByBase64, parseBase64, preProcessImageUrl, processImageElementInfo, resizeAndConvertImgBuffer, resizeImgBase64, saveBase64Image, scaleImage, validateScreenshotBuffer, zoomForGPT4o };
|
|
4
|
+
export { annotateRects, compositeElementInfoImg, compositePointMarkerImg, convertImgBufferToJpeg, convertPngBase64ToJpeg, createImgBase64ByFormat, cropByRect, httpImg2Base64, imageInfoOfBase64, inferBase64ImageFormat, isValidImageBuffer, isValidJPEGImageBuffer, isValidPNGImageBuffer, localImg2Base64, normalizeBase64Image, normalizeScreenshotBase64, paddingToMatchBlockByBase64, parseBase64, preProcessImageUrl, processImageElementInfo, resizeAndConvertImgBuffer, resizeImgBase64, saveBase64Image, scaleImage, validateScreenshotBuffer, zoomForGPT4o };
|
|
@@ -322,6 +322,12 @@ const parseBase64 = (fullBase64String)=>{
|
|
|
322
322
|
});
|
|
323
323
|
}
|
|
324
324
|
};
|
|
325
|
+
async function convertPngBase64ToJpeg(imageBase64, quality = 90) {
|
|
326
|
+
const { mimeType, body } = parseBase64(imageBase64);
|
|
327
|
+
if ('image/png' !== mimeType.toLowerCase()) return imageBase64;
|
|
328
|
+
const jpegBuffer = await convertImgBufferToJpeg(Buffer.from(body, 'base64'), quality);
|
|
329
|
+
return createImgBase64ByFormat('jpeg', jpegBuffer.toString('base64'));
|
|
330
|
+
}
|
|
325
331
|
async function scaleImage(imageBase64, scale) {
|
|
326
332
|
if (scale <= 0) throw new Error('Scale factor must be positive');
|
|
327
333
|
const { body } = parseBase64(imageBase64);
|
|
@@ -377,4 +383,4 @@ async function scaleImage(imageBase64, scale) {
|
|
|
377
383
|
imageBase64: base64
|
|
378
384
|
};
|
|
379
385
|
}
|
|
380
|
-
export { convertImgBufferToJpeg, createImgBase64ByFormat, cropByRect, httpImg2Base64, inferBase64ImageFormat, localImg2Base64, normalizeBase64Body, normalizeBase64Image, normalizeScreenshotBase64, paddingToMatchBlock, paddingToMatchBlockByBase64, parseBase64, photonFromBase64, photonToBase64, preProcessImageUrl, resizeAndConvertImgBuffer, resizeImgBase64, saveBase64Image, scaleImage, zoomForGPT4o };
|
|
386
|
+
export { convertImgBufferToJpeg, convertPngBase64ToJpeg, createImgBase64ByFormat, cropByRect, httpImg2Base64, inferBase64ImageFormat, localImg2Base64, normalizeBase64Body, normalizeBase64Image, normalizeScreenshotBase64, paddingToMatchBlock, paddingToMatchBlockByBase64, parseBase64, photonFromBase64, photonToBase64, preProcessImageUrl, resizeAndConvertImgBuffer, resizeImgBase64, saveBase64Image, scaleImage, zoomForGPT4o };
|
|
@@ -37,7 +37,7 @@ const external_utils_js_namespaceObject = require("../utils.js");
|
|
|
37
37
|
const external_helper_js_namespaceObject = require("./helper.js");
|
|
38
38
|
const external_init_debug_js_namespaceObject = require("./init-debug.js");
|
|
39
39
|
const MODEL_CONFIG_DOC_URL = 'https://midscenejs.com/model-common-config.html';
|
|
40
|
-
const getCurrentVersion = ()=>"1.11.0";
|
|
40
|
+
const getCurrentVersion = ()=>"1.11.1-beta-20260818123028.0";
|
|
41
41
|
const getInvalidModelFamilyMessage = (modelFamily)=>`Invalid MIDSCENE_MODEL_FAMILY value: ${modelFamily}. Current version v${getCurrentVersion()} accepts the following model families: ${external_types_js_namespaceObject.MODEL_FAMILY_VALUES.join(', ')}. You can also visit ${MODEL_CONFIG_DOC_URL} for the latest configuration information.`;
|
|
42
42
|
const KEYS_MAP = {
|
|
43
43
|
insight: external_constants_js_namespaceObject.INSIGHT_MODEL_CONFIG_KEYS,
|
package/dist/lib/img/index.js
CHANGED
|
@@ -39,14 +39,15 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
39
39
|
annotateRects: ()=>external_box_select_js_namespaceObject.annotateRects,
|
|
40
40
|
compositeElementInfoImg: ()=>external_box_select_js_namespaceObject.compositeElementInfoImg,
|
|
41
41
|
isValidPNGImageBuffer: ()=>external_info_js_namespaceObject.isValidPNGImageBuffer,
|
|
42
|
-
normalizeBase64Image: ()=>external_transform_js_namespaceObject.normalizeBase64Image,
|
|
43
|
-
compositePointMarkerImg: ()=>external_box_select_js_namespaceObject.compositePointMarkerImg,
|
|
44
42
|
cropByRect: ()=>external_transform_js_namespaceObject.cropByRect,
|
|
43
|
+
compositePointMarkerImg: ()=>external_box_select_js_namespaceObject.compositePointMarkerImg,
|
|
44
|
+
normalizeBase64Image: ()=>external_transform_js_namespaceObject.normalizeBase64Image,
|
|
45
45
|
isValidJPEGImageBuffer: ()=>external_info_js_namespaceObject.isValidJPEGImageBuffer,
|
|
46
|
+
convertPngBase64ToJpeg: ()=>external_transform_js_namespaceObject.convertPngBase64ToJpeg,
|
|
46
47
|
processImageElementInfo: ()=>external_box_select_js_namespaceObject.processImageElementInfo,
|
|
47
48
|
scaleImage: ()=>external_transform_js_namespaceObject.scaleImage,
|
|
48
|
-
zoomForGPT4o: ()=>external_transform_js_namespaceObject.zoomForGPT4o,
|
|
49
49
|
createImgBase64ByFormat: ()=>external_transform_js_namespaceObject.createImgBase64ByFormat,
|
|
50
|
+
zoomForGPT4o: ()=>external_transform_js_namespaceObject.zoomForGPT4o,
|
|
50
51
|
imageInfoOfBase64: ()=>external_info_js_namespaceObject.imageInfoOfBase64,
|
|
51
52
|
httpImg2Base64: ()=>external_transform_js_namespaceObject.httpImg2Base64
|
|
52
53
|
});
|
|
@@ -57,6 +58,7 @@ exports.annotateRects = __webpack_exports__.annotateRects;
|
|
|
57
58
|
exports.compositeElementInfoImg = __webpack_exports__.compositeElementInfoImg;
|
|
58
59
|
exports.compositePointMarkerImg = __webpack_exports__.compositePointMarkerImg;
|
|
59
60
|
exports.convertImgBufferToJpeg = __webpack_exports__.convertImgBufferToJpeg;
|
|
61
|
+
exports.convertPngBase64ToJpeg = __webpack_exports__.convertPngBase64ToJpeg;
|
|
60
62
|
exports.createImgBase64ByFormat = __webpack_exports__.createImgBase64ByFormat;
|
|
61
63
|
exports.cropByRect = __webpack_exports__.cropByRect;
|
|
62
64
|
exports.httpImg2Base64 = __webpack_exports__.httpImg2Base64;
|
|
@@ -83,6 +85,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
83
85
|
"compositeElementInfoImg",
|
|
84
86
|
"compositePointMarkerImg",
|
|
85
87
|
"convertImgBufferToJpeg",
|
|
88
|
+
"convertPngBase64ToJpeg",
|
|
86
89
|
"createImgBase64ByFormat",
|
|
87
90
|
"cropByRect",
|
|
88
91
|
"httpImg2Base64",
|
|
@@ -39,7 +39,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
39
39
|
paddingToMatchBlockByBase64: ()=>paddingToMatchBlockByBase64,
|
|
40
40
|
photonFromBase64: ()=>photonFromBase64,
|
|
41
41
|
parseBase64: ()=>parseBase64,
|
|
42
|
-
|
|
42
|
+
photonToBase64: ()=>photonToBase64,
|
|
43
43
|
resizeAndConvertImgBuffer: ()=>resizeAndConvertImgBuffer,
|
|
44
44
|
resizeImgBase64: ()=>resizeImgBase64,
|
|
45
45
|
saveBase64Image: ()=>saveBase64Image,
|
|
@@ -50,9 +50,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
50
50
|
normalizeBase64Image: ()=>normalizeBase64Image,
|
|
51
51
|
normalizeBase64Body: ()=>normalizeBase64Body,
|
|
52
52
|
zoomForGPT4o: ()=>zoomForGPT4o,
|
|
53
|
+
convertPngBase64ToJpeg: ()=>convertPngBase64ToJpeg,
|
|
53
54
|
createImgBase64ByFormat: ()=>createImgBase64ByFormat,
|
|
54
55
|
paddingToMatchBlock: ()=>paddingToMatchBlock,
|
|
55
|
-
|
|
56
|
+
httpImg2Base64: ()=>httpImg2Base64
|
|
56
57
|
});
|
|
57
58
|
const external_node_assert_namespaceObject = require("node:assert");
|
|
58
59
|
var external_node_assert_default = /*#__PURE__*/ __webpack_require__.n(external_node_assert_namespaceObject);
|
|
@@ -382,6 +383,12 @@ const parseBase64 = (fullBase64String)=>{
|
|
|
382
383
|
});
|
|
383
384
|
}
|
|
384
385
|
};
|
|
386
|
+
async function convertPngBase64ToJpeg(imageBase64, quality = 90) {
|
|
387
|
+
const { mimeType, body } = parseBase64(imageBase64);
|
|
388
|
+
if ('image/png' !== mimeType.toLowerCase()) return imageBase64;
|
|
389
|
+
const jpegBuffer = await convertImgBufferToJpeg(external_node_buffer_namespaceObject.Buffer.from(body, 'base64'), quality);
|
|
390
|
+
return createImgBase64ByFormat('jpeg', jpegBuffer.toString('base64'));
|
|
391
|
+
}
|
|
385
392
|
async function scaleImage(imageBase64, scale) {
|
|
386
393
|
if (scale <= 0) throw new Error('Scale factor must be positive');
|
|
387
394
|
const { body } = parseBase64(imageBase64);
|
|
@@ -438,6 +445,7 @@ async function scaleImage(imageBase64, scale) {
|
|
|
438
445
|
};
|
|
439
446
|
}
|
|
440
447
|
exports.convertImgBufferToJpeg = __webpack_exports__.convertImgBufferToJpeg;
|
|
448
|
+
exports.convertPngBase64ToJpeg = __webpack_exports__.convertPngBase64ToJpeg;
|
|
441
449
|
exports.createImgBase64ByFormat = __webpack_exports__.createImgBase64ByFormat;
|
|
442
450
|
exports.cropByRect = __webpack_exports__.cropByRect;
|
|
443
451
|
exports.httpImg2Base64 = __webpack_exports__.httpImg2Base64;
|
|
@@ -459,6 +467,7 @@ exports.scaleImage = __webpack_exports__.scaleImage;
|
|
|
459
467
|
exports.zoomForGPT4o = __webpack_exports__.zoomForGPT4o;
|
|
460
468
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
461
469
|
"convertImgBufferToJpeg",
|
|
470
|
+
"convertPngBase64ToJpeg",
|
|
462
471
|
"createImgBase64ByFormat",
|
|
463
472
|
"cropByRect",
|
|
464
473
|
"httpImg2Base64",
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { imageInfoOfBase64, isValidPNGImageBuffer, isValidJPEGImageBuffer, isValidImageBuffer, validateScreenshotBuffer, type ValidateScreenshotBufferOptions, } from './info';
|
|
2
|
-
export { resizeAndConvertImgBuffer, convertImgBufferToJpeg, resizeImgBase64, zoomForGPT4o, saveBase64Image, paddingToMatchBlockByBase64, cropByRect, scaleImage, localImg2Base64, httpImg2Base64, preProcessImageUrl, parseBase64, createImgBase64ByFormat, inferBase64ImageFormat, normalizeBase64Image, normalizeScreenshotBase64, type NormalizeScreenshotBase64Options, } from './transform';
|
|
2
|
+
export { resizeAndConvertImgBuffer, convertImgBufferToJpeg, convertPngBase64ToJpeg, resizeImgBase64, zoomForGPT4o, saveBase64Image, paddingToMatchBlockByBase64, cropByRect, scaleImage, localImg2Base64, httpImg2Base64, preProcessImageUrl, parseBase64, createImgBase64ByFormat, inferBase64ImageFormat, normalizeBase64Image, normalizeScreenshotBase64, type NormalizeScreenshotBase64Options, } from './transform';
|
|
3
3
|
export { processImageElementInfo, compositeElementInfoImg, compositePointMarkerImg, annotateRects, } from './box-select';
|
|
@@ -94,6 +94,13 @@ export declare const parseBase64: (fullBase64String: string) => {
|
|
|
94
94
|
mimeType: string;
|
|
95
95
|
body: string;
|
|
96
96
|
};
|
|
97
|
+
/**
|
|
98
|
+
* Convert a PNG base64 image to JPEG while leaving other image formats unchanged.
|
|
99
|
+
* @param imageBase64 - Image data URL or raw base64 body.
|
|
100
|
+
* @param quality - JPEG quality from 1 to 100.
|
|
101
|
+
* @returns A JPEG data URL for PNG input, otherwise the original input.
|
|
102
|
+
*/
|
|
103
|
+
export declare function convertPngBase64ToJpeg(imageBase64: string, quality?: number): Promise<string>;
|
|
97
104
|
/**
|
|
98
105
|
* Scales an image by a specified factor using Sharp or Photon
|
|
99
106
|
* @param imageBase64 - Base64 encoded image
|
package/package.json
CHANGED
package/src/img/index.ts
CHANGED
package/src/img/transform.ts
CHANGED
|
@@ -615,6 +615,26 @@ export const parseBase64 = (
|
|
|
615
615
|
}
|
|
616
616
|
};
|
|
617
617
|
|
|
618
|
+
/**
|
|
619
|
+
* Convert a PNG base64 image to JPEG while leaving other image formats unchanged.
|
|
620
|
+
* @param imageBase64 - Image data URL or raw base64 body.
|
|
621
|
+
* @param quality - JPEG quality from 1 to 100.
|
|
622
|
+
* @returns A JPEG data URL for PNG input, otherwise the original input.
|
|
623
|
+
*/
|
|
624
|
+
export async function convertPngBase64ToJpeg(
|
|
625
|
+
imageBase64: string,
|
|
626
|
+
quality = 90,
|
|
627
|
+
): Promise<string> {
|
|
628
|
+
const { mimeType, body } = parseBase64(imageBase64);
|
|
629
|
+
if (mimeType.toLowerCase() !== 'image/png') return imageBase64;
|
|
630
|
+
|
|
631
|
+
const jpegBuffer = await convertImgBufferToJpeg(
|
|
632
|
+
Buffer.from(body, 'base64'),
|
|
633
|
+
quality,
|
|
634
|
+
);
|
|
635
|
+
return createImgBase64ByFormat('jpeg', jpegBuffer.toString('base64'));
|
|
636
|
+
}
|
|
637
|
+
|
|
618
638
|
/**
|
|
619
639
|
* Scales an image by a specified factor using Sharp or Photon
|
|
620
640
|
* @param imageBase64 - Base64 encoded image
|