actions/analyze-image/analyze-image.mjs
import { prepareAdditionalProps } from "../../common/constants.mjs"; import { prepareFile } from "../../common/utils.mjs"; import imagga from "../../imagga.app.mjs"; export default { key: "imagga-analyze-image", name: "Analyze Image", description: "Assign a category to a single image based on its visual content. [See the documentation](https://docs.imagga.com/?shell#categories-categorizer_id)", version: "1.0.1", annotations: { destructiveHint: true, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { imagga, imageFile: { propDefinition: [ imagga, "imageFile", ], }, imageProcessType: { propDefinition: [ imagga, "imageProcessType", ], reloadProps: true, }, }, async additionalProps() { return prepareAdditionalProps({ props: imagga.propDefinitions, type: this.imageProcessType, }); }, async run({ $ }) { const { imagga, imageFile, language = [], saveIndex, saveId, extractOverallColors, extractObjectColors, deterministic, verbose, threshold, decreaseParents, categorizerId, overallCount, separatedCount, imageProcessType, taggerId, ...params } = this; const file = await prepareFile({ imageFile, imagga, }); if (typeof extractOverallColors === "boolean") params.extract_overall_colors = +extractOverallColors; if (typeof extractObjectColors === "boolean") params.extract_object_colors = +extractObjectColors; if (typeof deterministic === "boolean") params.deterministic = +deterministic; if (typeof verbose === "boolean") params.verbose = +verbose; if (typeof decreaseParents === "boolean") params["decrease_parents"] = +decreaseParents; if (threshold) params.threshold = parseFloat(threshold); const response = await imagga.analyzeImage({ $, taggerId, imageProcessType, categorizerId, params: { ...params, ...file, overall_count: overallCount, separated_count: separatedCount, language: language.toString(), save_index: saveIndex, save_id: saveId, }, }); $.export("$summary", "Image successfully assigned!"); return response; }, };