У меня есть два полных изображения, и мне нужно сравнить различия в пикселях и сохранить результат как третье изображение. Логика этого реализована в сценарии содержимого расширения Chrome, куда я передаю строки base64 для двух изображений. В своем коде я перебираю каналы RGBA для сравнения пикселей. В Chrome этот процесс занимает около 10–15 мс, а в Firefox тот же код занимает 350–400 мс. Я не уверен, почему существует такой большой разрыв в производительности — может ли это быть связано с разными движками JavaScript, используемыми в двух браузерах?
У меня есть два полных изображения, и мне нужно сравнить различия в пикселях и сохранить результат как третье изображение. Логика этого реализована в сценарии содержимого расширения Chrome, куда я передаю строки base64 для двух изображений. В своем коде я перебираю каналы RGBA для сравнения пикселей. В Chrome этот процесс занимает около 10–15 мс, а в Firefox тот же код занимает 350–400 мс. Я не уверен, почему существует такой большой разрыв в производительности — может ли это быть связано с разными движками JavaScript, используемыми в двух браузерах? [code]async function createDeltaImageFromBase64(currentImageBase64, previousImageBase64) { // Load images using base64 data URIs const currentImage = await loadImage(currentImageBase64); const previousImage = await loadImage(previousImageBase64);
// Ensure the dimensions match const width = Math.min(currentImage.width, previousImage.width); const height = Math.min(currentImage.height, previousImage.height);
// Create a canvas for the delta image const canvas = createCanvas(width, height); const ctx = canvas.getContext('2d');
// Draw the current image on the canvas ctx.drawImage(currentImage, 0, 0, width, height); const currentImageData = ctx.getImageData(0, 0, width, height);
// Draw the previous image on a temporary canvas const tempCanvas = createCanvas(width, height); const tempCtx = tempCanvas.getContext('2d'); tempCtx.drawImage(previousImage, 0, 0, width, height); const previousImageData = tempCtx.getImageData(0, 0, width, height);