首页 > 其他分享 >Vue3 读取Hdr 文件转Image显示

Vue3 读取Hdr 文件转Image显示

时间:2023-12-03 13:13:25浏览次数:36  
标签:canvas const Hdr tgt buffer Image Vue3 data exposure

import { decodeRGBE } from '@derschmale/io-rgbe'; //引入io-rgbe
//读取Hdr文件
const ReadHdrFile = (buffer: ArrayBufferLike & { BYTES_PER_ELEMENT?: undefined; }) => {

    const hdri = decodeRGBE(new DataView(buffer))
    const data = hdri.data;
    const tgt = new Uint8ClampedArray(data.length / 3 * 4);
    const gamma = 1.0 / 2.2;
    let exposure = 1;
    for (let i = 0, j = 0; i < data.length; i += 3) {
        tgt[j] = Math.pow(data[i] * exposure, gamma) * 0xff;
        tgt[j + 1] = Math.pow(data[i + 1] * exposure, gamma) * 0xff;
        tgt[j + 2] = Math.pow(data[i + 2] * exposure, gamma) * 0xff;
        tgt[j + 3] = 0xff;
        j += 4;
    }

    const imageData = new ImageData(tgt, hdri.width, hdri.height);
    function imgDataToImage(imagedata: ImageData) {
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');
        canvas.width = imagedata.width;
        canvas.height = imagedata.height;
        ctx?.putImageData(imagedata, 0, 0);


        canvas.remove();
        return canvas.toDataURL();
    }
    return imgDataToImage(imageData);

}


 const reader = new FileReader(); 

    reader.onload = (event: any) => {

        const buffer = event.target.result;

        var img = ReadHdrFile(buffer);
      
    };

    reader.readAsArrayBuffer(file);

标签:canvas,const,Hdr,tgt,buffer,Image,Vue3,data,exposure
From: https://www.cnblogs.com/xjserver/p/17872873.html

相关文章

  • Image Texture
    ImageTexture图像纹理基于常见图像格式(如PNG或JPEG)的外部文件。这样的文件可以根据绝对URL位于服务器上,根据相对URL位于与IFC文件相同的服务器上,在根据相对文件路径的相同本地目录内,在根据相关文件路径的IFC-ZIP文件内,或者在根据绝对文件路径的任意目录内。 对于在被视为永久......
  • Vue3 + TS 搭建组件库
    开始在编写组件库之前,我们首先要对整个代码项目的解构有一个清晰的划分,以及用到的大多数规范,和代码风格有一个约定,这篇文章主要就围绕着下面图中的几个问题展开描述一下。1、搭建monorepo环境我们使用pnpm当做包管理工具,用pnpmworkspace来实现monorepo。可以看下面参考文章......
  • vue3使用富文本编辑器wangEditor 5,增加自定义下拉框,并动态改变下拉框内容
    官方资料wangEditor官网效果展示准备工作这里按照wangEditor官网提供的Vue3Demo操作就行,下面的内容可以直接跳过安装yarnadd@wangeditor/editor#或者npminstall@wangeditor/editor--saveyarnadd@wangeditor/editor-for-vue@next#或者npminstall@w......
  • 关于Vue3中调试APP触发异常:exception:white screen cause create instanceContext fai
    bug:reportJSException>>>>exceptionfunction:createInstanceContext,exception:whitescreencausecreateinstanceContextfailed,checkjsstack->atuseStore(app-service.js:2309:15)问题在于:使用了pinia,并且在所有js文件或ts文件中调用超前,导致的加载错误 解决方......
  • vue3+vite项目优化静态资源使用云存储
    项目中的问题1.当我们在维护自己的博客或者自己的网站的时候没有特别好的服务器就会响应特别的慢2.当我们项目特别大的时候也会首屏加载特别慢而且vue项目打包后的js文件特别的庞大还要加载各种资源就会特别的卡顿3.当我们项目中用到了一些3D效果各种3D资源部特别的大的时......
  • 2、el-image设置error图像
    注意和2.0不同<el-table-columnlabel="人脸图像"align="center"prop="imageUrl"width="200px"><template#default="scope"><el-image:src=getImgUrl(scope.row.imageUrl)preview-telep......
  • 7.3 Windows驱动开发:内核监视LoadImage映像回调
    在笔者上一篇文章《内核注册并监控对象回调》介绍了如何运用ObRegisterCallbacks注册进程与线程回调,并通过该回调实现了拦截指定进行运行的效果,本章LyShark将带大家继续探索一个新的回调注册函数,PsSetLoadImageNotifyRoutine常用于注册LoadImage映像监视,当有模块被系统加载时则可......
  • Vue3快速上手(B站尚硅谷张天禹老师主讲vue全家桶)
    Vue3快速上手Vue3快速上手1.Vue3简介2.Vue3带来了什么1.性能的提升2.源码的升级3.拥抱TypeScript4.新的特性一、创建Vue3.0工程1.使用vue-cli创建2.使用vite创建二、常用CompositionAPI1.拉开序幕的setup2.ref函数3.reactive函数4.Vue3.0中的响应式原理vue2.x的响应式Vue3.0......
  • Vue3中的Pinia
    什么是Pinia官方文档:https://pinia.vuejs.org/zh/introduction.htmlPinia是Vue的专属状态管理库,它允许你跨组件或页面共享状态。如果你熟悉组合式API的话,你可能会认为可以通过一行简单的exportconststate=reactive({})来共享一个全局状态。对于单页应用来说确实可以,......
  • vue3 之 ArcoPro 后台管理系统
    一、资料链接ArcoDesign的官网:https://arco.design/ArcoDesign开箱的管理系统预览:https://vue-pro.arco.design/loginvue3项目创建的指南:https://arco.design/vue/docs/pro/start二、基本命令开始开发之前,请确认本地环境中安装好了 node, git ,这些肯定......