Skip to content

Commit cfdca38

Browse files
add: fixed crop (cover) ads imge thumbnail with Jimp library
1 parent ccd90a6 commit cfdca38

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

src/whatsapp/services/chatwoot.service.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import ChatwootClient from '@figuro/chatwoot-sdk';
22
import axios from 'axios';
33
import FormData from 'form-data';
44
import { createReadStream, readFileSync, unlinkSync, writeFileSync } from 'fs';
5+
import Jimp from 'jimp';
56
import mimeTypes from 'mime-types';
67
import path from 'path';
78

@@ -1399,11 +1400,9 @@ export class ChatwootService {
13991400
this.logger.verbose('message is from Ads');
14001401

14011402
this.logger.verbose('get base64 from media ads message');
1402-
const getBase64AdMsg = await axios.get(adsMessage.thumbnailUrl, { responseType: 'arraybuffer' });
1403-
const base64 = getBase64AdMsg.data.toString('base64');
1403+
const imgBuffer = await axios.get(adsMessage.thumbnailUrl, { responseType: 'arraybuffer' });
14041404

1405-
const contentType = getBase64AdMsg.headers['content-type'];
1406-
const extension = mimeTypes.extension(contentType);
1405+
const extension = mimeTypes.extension(imgBuffer.headers['content-type']);
14071406
const mimeType = extension && mimeTypes.lookup(extension);
14081407

14091408
if (!mimeType) {
@@ -1413,13 +1412,18 @@ export class ChatwootService {
14131412

14141413
const random = Math.random().toString(36).substring(7);
14151414
const nameFile = `${random}.${mimeTypes.extension(mimeType)}`;
1416-
const fileData = Buffer.from(base64, 'base64');
1415+
const fileData = Buffer.from(imgBuffer.data, 'binary');
14171416
const fileName = `${path.join(waInstance?.storePath, 'temp', `${nameFile}`)}`;
14181417

14191418
this.logger.verbose('temp file name: ' + nameFile);
1420-
14211419
this.logger.verbose('create temp file');
1422-
writeFileSync(fileName, fileData, 'utf8');
1420+
await Jimp.read(fileData)
1421+
.then(async (img) => {
1422+
await img.cover(320, 180).writeAsync(fileName);
1423+
})
1424+
.catch((err) => {
1425+
this.logger.error(`image is not write: ${err}`);
1426+
});
14231427
const truncStr = (str: string, len: number) => {
14241428
return str.length > len ? str.substring(0, len) + '...' : str;
14251429
};

0 commit comments

Comments
 (0)