当前位置: 首页 > 面试题库 >

HTML5 Canvas drawImage比率错误iOS

夔建章
2023-03-14
问题内容

我想使用HTML5 Canvas调整从客户端iOS摄像头拍摄的图像的大小,但是我一直在运行这个怪异的bug,该图像中的图像比例大于1.5mb时显示错误的比例

它可以在桌面上运行,但不能在具有媒体上传API的最新iOS版本中使用。

知道如何解决这个问题吗?这是内存问题吗?

$('#file').on('change', function (e) {
    var file = e.currentTarget.files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        var image = $('<img/>');
        image.on('load', function () {
            var square = 320;
            var canvas = document.createElement('canvas');

            canvas.width = square;
            canvas.height = square;

            var context = canvas.getContext('2d');
            context.clearRect(0, 0, square, square);
            var imageWidth;
            var imageHeight;
            var offsetX = 0;
            var offsetY = 0;

            if (this.width > this.height) {
                imageWidth = Math.round(square * this.width / this.height);
                imageHeight = square;
                offsetX = - Math.round((imageWidth - square) / 2);
            } else {
                imageHeight = Math.round(square * this.height / this.width);
                imageWidth = square;    
                offsetY = - Math.round((imageHeight - square) / 2);            
            }

            context.drawImage(this, offsetX, offsetY, imageWidth, imageHeight);
            var data = canvas.toDataURL('image/jpeg');

            var thumb = $('<img/>');
            thumb.attr('src', data);
            $('body').append(thumb);
        });
        image.attr('src', e.target.result);
    };
    reader.readAsDataURL(file);
});

问题答案:

有一个JavaScript画布调整大小库,可解决在iOS设备上在画布上绘制缩放图像时遇到的二次采样和垂直压扁问题:

当使用Alpha通道缩放图像(因为它使用Alpha通道进行问题检测)以及尝试调整现有画布元素的大小时,存在一些附带问题,但这是我发现的第一个实际解决此问题的方法。



 类似资料:
  • 我把一个WAV文件转换成MP3。ffmpeg的输出表明它正在转换为128k比特率,但最终只有32k比特率。 原始WAV文件是RIFF(little endian)数据、WAVE音频、Microsoft PCM、24位、立体声48000 Hz。 输出MP3文件是ID3版本2.4.0的音频文件,包含:MPEG ADTS,第三层,v1,32 kbps,48 kHz,立体声时检查与文件实用程序。我的PHP

  • 我有碱基错配的DNA扩增子,这可能会在PCR扩增过程中出现。我感兴趣的是,给定每个碱基的错误率、错配数和扩增子中碱基的数量,序列包含错误的概率是多少。 我偶然看到一篇文章[Cummings,S.M.et al(2010).群体遗传分析中PCR、克隆和测序错误的解决方案.保守遗传学,11(3),1095-1097.DOI:10.1007/S10592-009-9864-6]提出了在这种情况下计算概率

  • 我正在使用EclipseMars4.5。2.当为我的应用程序运行覆盖率测试时(到目前为止有317种测试方法),当它即将完成时(大约运行274种方法),我遇到了无法找到解决方案的错误。 首先弹出一个窗口,上面写着: 无保险数据 在此覆盖率会话期间未收集覆盖率数据。 请不要从Eclipse手动终止Java进程。 一个secon弹出窗口: 'com。山民。埃克莱玛。内部的果心发射。AgentServer

  • 问题内容: 我有一个错误值,当在控制台上打印时会给我 如何将其与特定的错误值进行比较?我试过了,但是没有用: 问题答案: 尝试 或通过实现错误接口来创建自己的错误。

  • 到目前为止,我已经在IntelliJ中尝试了几个小时的代码覆盖率测试,但没有成功。 RuntimeException:存根! 现在,我已经读到在模块选项中更改依赖顺序可以修复这个问题。所以在改变顺序后,我得到了这个错误: 它指向下面的代码: 我谷歌了又谷歌,但唉,到目前为止我还没有找到解决方案。

  • 问题内容: 我正在编写一个Java程序来输出2的指数幂(顺便说一句,我不能使用),但是在2 ^ 31和2 ^ 32处我得到了其他东西。另外,我不打算接受负整数。 我的代码: 我得到的输出是: 问题答案: An 用32位表示。因此,可以表示和之间的任何值。没有什么超出这个范围。 您可以使用(64位)或(可以表示直到内存限制的所有数字的数据结构)。 使用这些结构的缺点(尤其是)是CPU并不总是提供算术