Skip to content

Commit c99069f

Browse files
committed
feat: white background for png file with jpeg file extension
1 parent 17c600b commit c99069f

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ So, we resize the image to less than the maximum size that each browser restrict
7878
imageCompression.getDataUrlFromFile(file: File): Promise<base64 encoded string>
7979
imageCompression.getFilefromDataUrl(dataUrl: string, filename: string, lastModified?: number): Promise<File>
8080
imageCompression.loadImage(url: string): Promise<HTMLImageElement>
81-
imageCompression.drawImageInCanvas(img: HTMLImageElement): HTMLCanvasElement | OffscreenCanvas
81+
imageCompression.drawImageInCanvas(img: HTMLImageElement, fileType?: string): HTMLCanvasElement | OffscreenCanvas
8282
imageCompression.drawFileInCanvas(file: File): Promise<[ImageBitmap | HTMLImageElement, HTMLCanvasElement | OffscreenCanvas]>
8383
imageCompression.canvasToFile(canvas: HTMLCanvasElement | OffscreenCanvas, fileType: string, fileName: string, fileLastModified: number, quality?: number): Promise<File>
8484
imageCompression.getExifOrientation(file: File): Promise<number> // based on https://stackoverflow.com/a/32490603/10395024

lib/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ declare namespace imageCompression {
2828
function getDataUrlFromFile(file: File): Promise<string>;
2929
function getFilefromDataUrl(dataUrl: string, filename: string, lastModified?: number): Promise<File>;
3030
function loadImage(src: string): Promise<HTMLImageElement>;
31-
function drawImageInCanvas(img: HTMLImageElement): HTMLCanvasElement;
31+
function drawImageInCanvas(img: HTMLImageElement, fileType?: string): HTMLCanvasElement;
3232
function drawFileInCanvas(file: File): Promise<[ImageBitmap | HTMLImageElement, HTMLCanvasElement]>;
3333
function canvasToFile(canvas: HTMLCanvasElement, fileType: string, fileName: string, fileLastModified: number, quality?: number): Promise<File>;
3434
function getExifOrientation(file: File): Promise<number>;

lib/utils.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,16 @@ export function getNewCanvasAndCtx(width, height) {
170170
* drawImageInCanvas
171171
*
172172
* @param {HTMLImageElement} img
173+
* @param {string} [fileType=undefined]
173174
* @returns {HTMLCanvasElement | OffscreenCanvas}
174175
*/
175-
export function drawImageInCanvas(img) {
176+
export function drawImageInCanvas(img, fileType = undefined) {
176177
const { width, height } = approximateBelowMaximumCanvasSizeOfBrowser(img.width, img.height);
177178
const [canvas, ctx] = getNewCanvasAndCtx(width, height);
179+
if (fileType && /jpe?g/.test(fileType)) {
180+
ctx.fillStyle = 'white'; // to fill the transparent background with white color for png file in jpeg extension
181+
ctx.fillRect(0, 0, canvas.width, canvas.height);
182+
}
178183
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
179184
return canvas;
180185
}
@@ -228,7 +233,7 @@ export async function drawFileInCanvas(file) {
228233
throw e2;
229234
}
230235
}
231-
const canvas = drawImageInCanvas(img);
236+
const canvas = drawImageInCanvas(img, file.type);
232237
return [img, canvas];
233238
}
234239

0 commit comments

Comments
 (0)