mirror of
https://github.com/diced/zipline.git
synced 2025-12-05 20:40:12 -08:00
fix: #926 animated compression removes animation
This commit is contained in:
@@ -189,6 +189,8 @@ export function uploadFiles(
|
||||
options.format !== 'default' && req.setRequestHeader('x-zipline-format', options.format);
|
||||
options.imageCompressionPercent &&
|
||||
req.setRequestHeader('x-zipline-image-compression-percent', options.imageCompressionPercent.toString());
|
||||
options.imageCompressionFormat !== 'default' &&
|
||||
req.setRequestHeader('x-zipline-image-compression-type', options.imageCompressionFormat);
|
||||
options.maxViews && req.setRequestHeader('x-zipline-max-views', options.maxViews.toString());
|
||||
options.addOriginalName && req.setRequestHeader('x-zipline-original-name', 'true');
|
||||
options.overrides_returnDomain && req.setRequestHeader('x-zipline-domain', options.overrides_returnDomain);
|
||||
|
||||
@@ -250,6 +250,8 @@ export async function uploadPartialFiles(
|
||||
'x-zipline-image-compression-percent',
|
||||
options.imageCompressionPercent.toString(),
|
||||
);
|
||||
options.imageCompressionFormat !== 'default' &&
|
||||
req.setRequestHeader('x-zipline-image-compression-type', options.imageCompressionFormat);
|
||||
options.maxViews && req.setRequestHeader('x-zipline-max-views', options.maxViews.toString());
|
||||
options.addOriginalName && req.setRequestHeader('x-zipline-original-name', 'true');
|
||||
options.overrides_returnDomain &&
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { extname } from 'path';
|
||||
import sharp from 'sharp';
|
||||
|
||||
export const COMPRESS_TYPES = ['jpg', 'jpeg', 'png', 'webp', 'jxl'] as const;
|
||||
@@ -22,7 +23,9 @@ export function checkOutput(type: CompressType): boolean {
|
||||
export async function compressFile(filePath: string, options: CompressOptions): Promise<CompressResult> {
|
||||
const { quality, type } = options;
|
||||
|
||||
const image = sharp(filePath).withMetadata();
|
||||
const animated = ['.gif', '.webp', '.avif', '.tiff'].includes(extname(filePath).toLowerCase());
|
||||
|
||||
const image = sharp(filePath, { animated }).withMetadata();
|
||||
|
||||
const result: CompressResult = {
|
||||
mimetype: '',
|
||||
@@ -56,7 +59,7 @@ export async function compressFile(filePath: string, options: CompressOptions):
|
||||
break;
|
||||
}
|
||||
|
||||
await sharp(buffer).toFile(filePath);
|
||||
await sharp(buffer, { animated }).toFile(filePath);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -185,6 +185,7 @@ export function parseHeaders(headers: UploadHeaders, fileConfig: Config['files']
|
||||
|
||||
const imageCompressionPercent = headers['x-zipline-image-compression-percent'];
|
||||
const imageCompressionType = headers['x-zipline-image-compression-type'];
|
||||
|
||||
if (imageCompressionType) {
|
||||
if (!imageCompressionPercent)
|
||||
return headerError(
|
||||
|
||||
Reference in New Issue
Block a user