You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
94 lines
3.0 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.getImageDimensionsAsync = getImageDimensionsAsync;
|
|
exports.resizeImageAsync = resizeImageAsync;
|
|
exports.setGetImageDimensionsFunction = setGetImageDimensionsFunction;
|
|
exports.setResizeImageFunction = setResizeImageFunction;
|
|
function _fs() {
|
|
const data = _interopRequireDefault(require("fs"));
|
|
_fs = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _path() {
|
|
const data = _interopRequireDefault(require("path"));
|
|
_path = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _probeImageSize() {
|
|
const data = _interopRequireDefault(require("probe-image-size"));
|
|
_probeImageSize = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _internal() {
|
|
const data = require("../internal");
|
|
_internal = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
/**
|
|
* @param {string} projectDirname
|
|
* @param {string} basename
|
|
* @returns {} { width: number, height: number } image dimensions or null
|
|
*/
|
|
async function getImageDimensionsAsync(projectDirname, basename) {
|
|
try {
|
|
return await _getImageDimensionsAsync(projectDirname, basename);
|
|
} catch {}
|
|
return null;
|
|
}
|
|
async function _getImageDimensionsWithImageProbeAsync(projectDirname, basename) {
|
|
const imagePath = _path().default.resolve(projectDirname, basename);
|
|
const readStream = _fs().default.createReadStream(imagePath);
|
|
const {
|
|
width,
|
|
height
|
|
} = await (0, _probeImageSize().default)(readStream);
|
|
readStream.destroy();
|
|
return {
|
|
width,
|
|
height
|
|
};
|
|
}
|
|
let _hasWarned = false;
|
|
async function resizeImageAsync(iconSizePx, iconFilename, destinationIconPath) {
|
|
if (process.platform !== 'darwin' && _resizeImageAsync === _resizeImageWithSipsAsync && !_hasWarned) {
|
|
_internal().LoggerDetach.warn('`sips` utility may or may not work outside of macOS');
|
|
_hasWarned = true;
|
|
}
|
|
return _resizeImageAsync(iconSizePx, iconFilename, destinationIconPath);
|
|
}
|
|
async function _resizeImageWithSipsAsync(iconSizePx, iconFilename, destinationIconPath) {
|
|
return _internal().ExponentTools.spawnAsyncThrowError('sips', ['-Z', iconSizePx.toFixed(), iconFilename], {
|
|
stdio: ['ignore', 'ignore', 'inherit'],
|
|
// only stderr
|
|
cwd: destinationIconPath
|
|
});
|
|
}
|
|
|
|
// Allow us to swap out the default implementations of image functions
|
|
let _resizeImageAsync = _resizeImageWithSipsAsync;
|
|
let _getImageDimensionsAsync = _getImageDimensionsWithImageProbeAsync;
|
|
|
|
// Allow users to provide an alternate implementation for our image resize function.
|
|
// This is used internally in order to use sharp instead of sips in standalone builder.
|
|
function setResizeImageFunction(fn) {
|
|
_resizeImageAsync = fn;
|
|
}
|
|
|
|
// Allow users to provide an alternate implementation for our image dimensions function.
|
|
// This is used internally in order to use sharp instead of sips in standalone builder.
|
|
function setGetImageDimensionsFunction(fn) {
|
|
_getImageDimensionsAsync = fn;
|
|
}
|
|
//# sourceMappingURL=ImageUtils.js.map
|