|
@@ -46,32 +46,32 @@
|
|
|
handleClipboardItems(event.dataTransfer.items);
|
|
|
});
|
|
|
|
|
|
- function compressImage(blobFile, quality = 0.8) {
|
|
|
- // 返回一个Promise对象
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
- // 创建一个Image对象
|
|
|
- const image = new Image();
|
|
|
- // 当Image对象加载完成时,执行以下操作
|
|
|
- image.onload = () => {
|
|
|
- const canvas = document.createElement("canvas");
|
|
|
- canvas.width = image.naturalWidth;
|
|
|
- canvas.height = image.naturalHeight;
|
|
|
- const context = canvas.getContext("2d");
|
|
|
- context.drawImage(image, 0, 0);
|
|
|
- canvas.toBlob((webpBlob) => {
|
|
|
- // 解决Promise,并传递压缩后的Blob对象
|
|
|
- resolve(webpBlob);
|
|
|
- }, "image/webp", quality);
|
|
|
- // 如果在转换过程中发生错误,拒绝Promise
|
|
|
- };
|
|
|
- image.src = URL.createObjectURL(blobFile);
|
|
|
- });
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
function compressImageToSize(blobFile, targetSize = 300 * 1024, maxIterations = 5, minQuality = 0.01) {
|
|
|
let currentQuality = 0.8; // 初始压缩质量
|
|
|
let iteration = 0; // 当前迭代次数
|
|
|
-
|
|
|
+ function compressImage(blobFile, quality = 0.8) {
|
|
|
+ // 返回一个Promise对象
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ // 创建一个Image对象
|
|
|
+ const image = new Image();
|
|
|
+ // 当Image对象加载完成时,执行以下操作
|
|
|
+ image.onload = () => {
|
|
|
+ const canvas = document.createElement("canvas");
|
|
|
+ canvas.width = image.naturalWidth;
|
|
|
+ canvas.height = image.naturalHeight;
|
|
|
+ const context = canvas.getContext("2d");
|
|
|
+ context.drawImage(image, 0, 0);
|
|
|
+ canvas.toBlob((webpBlob) => {
|
|
|
+ // 解决Promise,并传递压缩后的Blob对象
|
|
|
+ resolve(webpBlob);
|
|
|
+ }, "image/webp", quality);
|
|
|
+ // 如果在转换过程中发生错误,拒绝Promise
|
|
|
+ };
|
|
|
+ image.src = URL.createObjectURL(blobFile);
|
|
|
+ });
|
|
|
+ }
|
|
|
function attemptCompression() {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
// 递归调用compressImage函数进行压缩
|