GoogleCloudPlatform / GoogleCloudPlatform/functions-framework-nodejs

imagemagick not working on google cloud function

Ouverte
#607 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
bug P3
Langage dominant
TypeScript
Étoiles
1.4k
Forks
181
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I am using this npm package for [image-magick](https://www.npmjs.com/package/imagemagick) and using google cloud functions framework to be used with my package.

the package that google cloud function are using for image magick as mentioned in their docs [https://cloud.google.com/appengine/docs/standard/reference/system-packages?tab=node.js#top](url), this doesn't work.

I am creating a simple function to download a file and then convert that pdf file to png file using this code

```
import * as util from "util";
import fs from "fs";

import * as im from "imagemagick";
import * as child_process from "child_process";
import functions from "@google-cloud/functions-framework";
import { CloudProvider } from "./packages/cloud-provider/src/index.js";

const { execFileSync, spawnSync, execSync } = child_process;

const cloud = CloudProvider.getInstance();

functions.http("im-testing", async (req, res) => {
let val = await cloud.storage.getFile(
"gcp-setup-testing",
"asad-testing/pdf-test.pdf"
);
const output1 = execSync("ls ./temp").toString();
console.log("before: ", output1);
fs.writeFileSync("./temp/pdf-test.pdf", val?.Body);
if (fs.existsSync("./temp/pdf-test.pdf")) {
execSync('chmod 755 ./temp/pdf-test.pdf');
}

let convert = util.promisify(im.convert);
let convArr = [
"-density",
"400",
"./temp/pdf-test.pdf",
"-resize",
"25%",
"./temp/a.png",
];
await convert(convArr);
const output2 = execSync("ls ./temp").toString();
console.log("after: ", output2);
res.status(200).json({ message: "File converted successfully" });
});

```

I always get this error `Command failed: convert-im6.q16: no images defined `./temp/a.png' @
error/convert.c/ConvertImageCommand/3229.`

I made a docker container using this

```
FROM node:20.9.0
# Install ImageMagick
RUN apt-get update -y && \
apt-get install -y imagemagick
WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build-ts
CMD ["npm", "run", "start-ts"]
```

but the max version that container allows for imagemagick is 6.9.11 and that isn't working.
I tried running a simple command for convert that also gave me the same error. Let me know if you need any other log or information on this one but the imagemagick v6.9.11 isn't working anymore on google cloud function

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

L’issue ne nomme aucun fichier ni test du dépôt ; commencez par le handler Node.js et le Dockerfile fournis, puis reproduisez la commande de conversion ImageMagick dans ce conteneur et dans l’environnement Google Cloud Function. Un résultat utile serait une cause confirmée et une modification documentée du framework ou du runtime, mais l’issue ne définit pas quel comportement devrait être modifié.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
google-cloud, node.js, typescript
Domaine
backend, cloud
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.