【HTML】image not loaded for security reasons

本文介绍了解决WebGL项目中因安全原因导致的图像加载失败问题,提供了两种解决方案:一是通过搭建网站访问,二是内嵌图片资源,确保项目在本地运行时也能正常加载图像。

 问题描述

Uncaught Error: image not loaded for security reasons (serve this page over "http://" instead)
    at Function.Texture.fromImage (lightgl.js:1843)
    at new Renderer (renderer.js:106)
    at window.onload (main.js:65)

解决方案

方案一、搭建网站访问

有服务器环境,将项目部署在web服务器上,最简单的tomcat。

方案二、内嵌图片资源

WebGL-Water为例:

<!DOCTYPE html>
<html><head>
  <title>WebGL Water</title>
  <script src="lightgl.js">
  </script>
  <script src="cubemap.js"></script>
  <script src="renderer.js"></script>
  <script src="water.js"></script>
  <script src="main.js"></script>
  <style type="text/css">
    * { -webkit-user-select: none; 
      -moz-user-select: none; 
      cursor: default; }
    body { font: 13px/18px Arial,
       sans-serif; background: black; 
       color: white;
       overflow: hidden; }
       img {
         visibility: hidden;
       }
  </style>
</head><body>
  <div id="loading">Loading...
  <img id="tiles" src="https://img-blog.csdnimg.cn/2022010621122374958.jpeg">
  <img id="xneg" src="https://img-blog.csdnimg.cn/2022010621122374958.jpeg">
  <img id="xpos" src="https://img-blog.csdnimg.cn/2022010621122374958.jpeg">
  <img id="ypos" src="https://img-blog.csdnimg.cn/2022010621122374958.jpeg">
  <img id="zneg" src="https://img-blog.csdnimg.cn/2022010621122374958.jpeg">
  <img id="zpos" src="https://img-blog.csdnimg.cn/2022010621122374958.jpeg">
</div>
</body></html>

下载的图片显示 `image not loaded` 可能由以下原因导致及对应的解决办法如下: ### 图片文件问题 - **文件损坏**:在下载过程中,若网络不稳定或出现中断,可能导致图片文件未完整下载,从而损坏。解决办法是重新下载图片,确保网络稳定,可选择在网络状况良好时进行下载。 - **文件格式问题**:图片文件格式可能不被支持。例如,有些软件只能识别特定格式的图片,如 `.jpg`、`.png` 等。若下载的图片格式不兼容,就会显示 `image not loaded`。可将图片转换为支持的格式,使用图像编辑软件如 Adobe Photoshop、GIMP 等打开图片并另存为支持的格式。 ### 软件或环境问题 - **软件配置问题**:在开发环境如 WebStorm、Pycharm 中,软件的配置可能影响图片的加载。如 WebStorm 导入图片报错 `Image not loaded try to open ot externally to fix format problem`,Pycharm 展示词云图显示 `Image noe loaded,Try to open it externally to fix format problem`,可能是软件对图片的加载设置有问题。可以尝试更新软件到最新版本,或者检查软件的相关配置选项,确保其支持图片加载[^1][^2]。 - **依赖库缺失**:在某些开发场景中,图片的加载依赖特定的库。例如在 iOS 开发中,报错 `dyld: Library not loaded: @rpath/xxx.framework Reason: image not found`,表示所需的库文件未找到。需要检查项目的依赖配置,确保相关库已正确添加和链接。若缺少库文件,需按照正确的方法添加,如通过 CocoaPods 等包管理工具进行安装[^3]。 ### 系统权限问题 在某些系统中,可能由于权限不足导致无法加载图片。例如在 Mac 系统中,若出现 `dyld: Library not loaded: @rpathlibmysqlclient.21.dylib Reason: image not found` 问题,可能与系统的权限设置有关。可以通过关闭系统完整性保护(SIP),建立软连接,再重新打开 SIP 来解决,但此操作需谨慎,因为关闭 SIP 可能会影响系统的安全性[^4]。 ### 代码示例 以下是一个使用 Python 下载图片的示例代码,可用于重新下载图片: ```python import requests def download_image(url, file_path): try: response = requests.get(url, stream=True) response.raise_for_status() with open(file_path, 'wb') as file: for chunk in response.iter_content(chunk_size=8192): if chunk: file.write(chunk) print("图片下载成功") except requests.exceptions.RequestException as e: print(f"下载图片时出现错误: {e}") # 使用示例 image_url = "https://example.com/image.jpg" save_path = "downloaded_image.jpg" download_image(image_url, save_path) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值