From f014b7ae0ece886ef0cff2366b9925e23b34ba6f Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Tue, 5 Feb 2019 03:01:36 +0900 Subject: アニメーションを自動再生しないオプション (#4131) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Refactor * settings * Media Proxy * Replace API response --- src/services/drive/image-processor.ts | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/services/drive/image-processor.ts (limited to 'src/services/drive/image-processor.ts') diff --git a/src/services/drive/image-processor.ts b/src/services/drive/image-processor.ts new file mode 100644 index 0000000000..3c538390b0 --- /dev/null +++ b/src/services/drive/image-processor.ts @@ -0,0 +1,75 @@ +import * as sharp from 'sharp'; + +export type IImage = { + data: Buffer; + ext: string; + type: string; +}; + +/** + * Convert to JPEG + * with resize, remove metadata, resolve orientation, stop animation + */ +export async function ConvertToJpeg(path: string, width: number, height: number): Promise { + const data = await sharp(path) + .resize(width, height, { + fit: 'inside', + withoutEnlargement: true + }) + .rotate() + .jpeg({ + quality: 85, + progressive: true + }) + .toBuffer(); + + return { + data, + ext: 'jpg', + type: 'image/jpeg' + }; +} + +/** + * Convert to WebP + * with resize, remove metadata, resolve orientation, stop animation + */ +export async function ConvertToWebp(path: string, width: number, height: number): Promise { + const data = await sharp(path) + .resize(width, height, { + fit: 'inside', + withoutEnlargement: true + }) + .rotate() + .webp({ + quality: 85 + }) + .toBuffer(); + + return { + data, + ext: 'webp', + type: 'image/webp' + }; +} + +/** + * Convert to PNG + * with resize, remove metadata, resolve orientation, stop animation + */ +export async function ConvertToPng(path: string, width: number, height: number): Promise { + const data = await sharp(path) + .resize(width, height, { + fit: 'inside', + withoutEnlargement: true + }) + .rotate() + .png() + .toBuffer(); + + return { + data, + ext: 'png', + type: 'image/png' + }; +} -- cgit v1.2.3-freya