GOAT10_ 2024-05-16 11:40 采纳率: 0%
浏览 24

web中处理tiff类型文件报错

我想在web中处理tiff类型图片。我从GitHub上下载了tiff.min.js https://github.com/seikichi/tiff.js
但是我的网页报错

img


我的网页也无法处理tiff类型图片。以下是我的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SAM</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="tiff.min.js"></script> <!-- 确保路径正确 -->
    <style>
        img, canvas { max-width: 300px; }
    </style>
</head>
<body>
    <div>
        <img src="" alt="">
    </div>
    <input type="file" id="upload" accept="image/*">
    <button id="processButton">处理图片</button>
    <!-- 新增一个div元素用于展示选择的图片 -->
    <div id="originalImageContainer"></div>
    <!-- 去掉原先的输出区域 -->
<script>
    $('#upload').on('change', function (e) {
        var curFile = this.files[0];
        displaySelectedImage(curFile); // 显示选择的图片
    });

    $('#processButton').on('click', function() {
        var curFile = $('#upload')[0].files[0];
        if (curFile) {
            processImage(curFile); // 处理图像
        } else {
            alert('请选择图片');
        }
    });

    function displaySelectedImage(file) {
        if (file.type === 'image/tiff' || file.type === 'image/tif') {
            var reader = new FileReader();
            reader.readAsArrayBuffer(file); // 读取文件数据

            reader.onload = function (e) {
                var buffer = e.target.result;
                var tiff = new Tiff({ buffer: buffer });
                var canvas = tiff.toCanvas();
                displayOriginalImage(canvas); // 显示选择的图片
            };
        } else {
            var reader = new FileReader();
            reader.readAsDataURL(file); // 读取文件数据

            reader.onload = function () {
                var img = new Image();
                img.src = reader.result;
                img.onload = function () {
                    // 显示选择的图片
                    displayOriginalImage(img);
                };
            };
        }
    }

    function processImage(file) {
        if (file.type === 'image/tiff' || file.type === 'image/tif') {
            var reader = new FileReader();
            reader.readAsArrayBuffer(file); // 读取文件数据

            reader.onload = function (e) {
                var buffer = e.target.result;
                var tiff = new Tiff({ buffer: buffer });
                var canvas = tiff.toCanvas();

                // 将图片放大两倍
                var processedCanvas = document.createElement('canvas');
                var ctx = processedCanvas.getContext('2d');
                processedCanvas.width = canvas.width * 2;
                processedCanvas.height = canvas.height * 2;
                ctx.drawImage(canvas, 0, 0, canvas.width * 2, canvas.height * 2);

                // 显示处理后的图像
                displayProcessedImage(processedCanvas);
            };
        } else {
            var reader = new FileReader();
            reader.readAsDataURL(file); // 读取文件数据

            reader.onload = function () {
                var img = new Image();
                img.src = reader.result;
                img.onload = function () {
                    // 将图片放大两倍
                    var canvas = document.createElement('canvas');
                    var ctx = canvas.getContext('2d');
                    canvas.width = img.width * 2;
                    canvas.height = img.height * 2;
                    ctx.drawImage(img, 0, 0, img.width * 2, img.height * 2);

                    // 显示处理后的图像
                    displayProcessedImage(canvas);
                };
            };
        }
    }

    function displayOriginalImage(img) {
        $('#originalImageContainer').empty().append(img);
    }

    function displayProcessedImage(img) {
        $('#originalImageContainer').append('<br>'); // 添加一个换行符以区分原始和处理后的图片
        $('#originalImageContainer').append(img); // 在同一位置追加处理后的图片
    }
</script>
</body>
</html>

请大家帮我看看怎么回事

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-05-16 11:40
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您想要解决的问题

    您提问的目的是解决在Web中处理TIFF类型图片时遇到的报错问题,并且希望网页能够正确处理TIFF格式的图片。

    图片内容

    您上传的图片显示了浏览器的开发者工具中的控制台输出,其中包含了一些JavaScript代码片段和错误信息。错误信息指出存在一个语法错误,具体是在tiff.min.js文件的1934行153列位置,错误信息为:"A 'use asm' is only meaningful in the Directive Prologue of a function body"。

    问题出现原因

    根据您提供的代码和图片内容,问题可能出现的原因有:

    1. tiff.min.js文件可能存在语法错误或者不兼容当前浏览器的JavaScript引擎。
    2. 浏览器可能不支持use asm指令,这通常是用于WebAssembly的,而tiff.min.js可能尝试使用了这个指令。

    问题解决方案

    为了解决这个问题,您可以尝试以下步骤:

    1. 确保tiff.min.js文件是最新的,并且与您的浏览器兼容。
    2. 如果tiff.min.js文件中确实存在use asm指令,您可能需要寻找一个替代的库,或者等待该库的更新以修复兼容性问题。
    3. 检查您的浏览器是否支持WebAssembly,如果不支持,您可能需要使用其他浏览器或更新当前浏览器。

    提供代码

    由于问题可能出在tiff.min.js文件本身,而不是您的代码,因此不需要修改您的代码。您可以尝试使用其他库来处理TIFF图片,例如libtiff

    代码运行方式

    如果您决定使用libtiff或其他替代库,您需要按照该库的文档说明来设置开发环境和运行代码。

    代码预期运行结果

    预期结果是,当用户选择一个TIFF图片文件并点击处理按钮时,网页能够正确读取和处理TIFF图片,并且在页面上显示原始图片和处理后的图片。

    推荐相关链接

    请注意,由于我不能直接访问互联网,所以无法提供最新的解决方案或者确认tiff.min.js库的当前状态。您可能需要自行查找和验证上述链接的有效性。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月16日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题