js修改img的src属性显示变换图片到前端页面,img的src属性显示java后台读取返回的本地图片

文章目录

  • 前言
  • 一、HTML 图像- 图像标签( <img>)
    • 1.1图像标签的源属性(Src)
    • 1.2图像标签源属性(Src)显示项目中图片
    • 1.3图像标签源属性(Src)显示网络图片
  • 二、图像标签( <img>)显示本地图片
    • 2.1直接显示本地图片
    • 2.2 点击按钮显示或者刷新显示本地图片


前言

img的src属性是前端用来显示一张图片的来源,一般情况下src最常见是显示项目中resources\static问价夹下的图片,或者显示公网上的图片,如果想要在前端显示本地图片那要怎么处理呢?如果直接用本地图片的地址(例如src=“D:\Users\test.jpg”)前端是无法显示的。


一、HTML 图像- 图像标签( )

1.1图像标签的源属性(Src)

<img> 是空标签,它只包含属性,并且没有闭合标签。
要在页面上显示图像,你需要使用源属性(src)。src 指 “source”。源属性的值是图像的 URL 地址。

这表示在前端显示项目resources\static\img\1.jpg图片。
alt 属性用来为图像定义一串预备的可替换的文本,在浏览器无法载入图像时,替换文本属性告诉读者失去的信息。

1.2图像标签源属性(Src)显示项目中图片

<img src="img\1.jpg" alt="图片1" width="710" height="904">

1.3图像标签源属性(Src)显示网络图片

<img src="https://cn.bing.com/images/search?view=detailV2&ccid=CHB%2blvhE&id=BCC6162523ACBBC86A0B525F6D66FB3A13AA6CE9&thid=OIP.CHB-lvhE4q3AKMRtSy1MjwHaE6&mediaurl=https%3a%2f%2fts1.cn.mm.bing.net%2fth%2fid%2fR-C.08707e96f844e2adc028c46d4b2d4c8f%3frik%3d6WyqEzr7Zm1fUg%26riu%3dhttp%253a%252f%252fimg.pconline.com.cn%252fimages%252fupload%252fupc%252ftx%252fphotoblog%252f1606%252f09%252fc11%252f22613129_1465478292330.jpg%26ehk%3dRsVcxTWo%252f4%252fBxDh9yrKJYEpfgkI7n5SZ8zOP4fOzxOw%253d%26risl%3d%26pid%3dImgRaw%26r%3d0&exph=2136&expw=3216&q=%e8%93%9d%e5%a4%a9%e7%99%bd%e4%ba%91&simid=608042815603765163&FORM=IRPRST&ck=803BE79ECFB56BAE48C57F2B31E69FBA&selectedIndex=0&idpp=overlayview&ajaxhist=0&ajaxserp=0" alt="图片1" width="710" height="904">

二、图像标签( )显示本地图片

2.1直接显示本地图片

<img src="http://127.0.0.1:8080/readImg" alt="图片1" width="710" height="904">

127.0.0.1是本地ip地址,8080是项目启动的端口号。
/readImg表示要请求后台返回一个图片流。下面是java后台处理的代码显示本地D:\img\1.jpg图片

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.OutputStream;@Controller
public class ShowLocalImg {@RequestMapping("/readImg")public void readImg1(HttpServletRequest request, HttpServletResponse response){FileInputStream in;try {request.setCharacterEncoding("utf-8");//页面img标签中src中传入的真是图片地址路径path = "D:\\img\\1.jpg";String filePathEcode=new String(path.trim().getBytes(), "UTF-8");response.setContentType("application/octet-stream;charset=UTF-8");//图片读取路径in=new FileInputStream(filePathEcode);// 得到文件大小int i=in.available();//创建存放文件内容的数组byte[]data=new byte[i];in.read(data);in.close();//把图片写出去OutputStream outputStream=new BufferedOutputStream(response.getOutputStream());outputStream.write(data);//将缓存区的数据进行输出outputStream.flush();outputStream.close();} catch (Exception e) {System.out.println(e.getMessage());}}
}

2.2 点击按钮显示或者刷新显示本地图片

前端代码:

<!DOCTYPE html>
<html>
<body>
<p id="demo">点击按钮来改变img标签src属性的值。</p>
<button onclick="myFunction()">试一下</button>
<img id="img" src="" width="200"/>
<script>
function myFunction(){$.ajax({type : 'GET',url :  '/readImg',success : function (){//请求成功,给照片处可以用下面的方法给src属性赋值document.getElementById("img").setAttribute("src", "http://127.0.0.1:8080/readImg");} });
}
</script>
</body>
</html>

java后端代码:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.OutputStream;@Controller
public class ShowLocalImg {@RequestMapping("/readImg")public void readImg1(HttpServletRequest request, HttpServletResponse response){FileInputStream in;try {request.setCharacterEncoding("utf-8");//页面img标签中src中传入的真是图片地址路径path = "D:\\img\\1.jpg";String filePathEcode=new String(path.trim().getBytes(), "UTF-8");response.setContentType("application/octet-stream;charset=UTF-8");//图片读取路径in=new FileInputStream(filePathEcode);// 得到文件大小int i=in.available();//创建存放文件内容的数组byte[]data=new byte[i];in.read(data);in.close();//把图片写出去OutputStream outputStream=new BufferedOutputStream(response.getOutputStream());outputStream.write(data);//将缓存区的数据进行输出outputStream.flush();outputStream.close();} catch (Exception e) {System.out.println(e.getMessage());}}
}

如果想要显示指定名称的图片,可以增加一个输入框输入图片名称,在url中传入到后台
前端代码如下:

<!DOCTYPE html>
<html>
<body>
<input type="text" id="picName" placeholder="显示图片">
<button onclick="myFunction()">刷新图片</button>
<img id="img" src="" width="200"/>
<script>
function myFunction(){$.ajax({type : 'GET',url :  '/readImg?picName='+ $('#picName').val(),success : function (){//请求成功,给照片处可以用下面的方法给src属性赋值document.getElementById("img").setAttribute("src", "http://127.0.0.1:8080/readImg");} });
}
</script>
</body>
</html>

后台代码:

@RequestMapping("/readImg")public void readImg(String picName, HttpServletRequest request, HttpServletResponse response){FileInputStream in;try {request.setCharacterEncoding("utf-8");//页面img标签中src中传入的真是图片地址路径//String path = request.getParameter("barcode");path = "D:\\img\\"+picName+".jpg";String filePathEcode=new String(path.trim().getBytes(), "UTF-8");response.setContentType("application/octet-stream;charset=UTF-8");//图片读取路径in=new FileInputStream(filePathEcode);// 得到文件大小int i=in.available();//创建存放文件内容的数组byte[]data=new byte[i];in.read(data);in.close();//把图片写出去OutputStream outputStream=new BufferedOutputStream(response.getOutputStream());outputStream.write(data);//将缓存区的数据进行输出outputStream.flush();outputStream.close();} catch (Exception e) {System.out.println(e.getMessage());}}

最终效果:
注意:由于在项目中使用了模板,所以input框和按钮显示会跟上述代码中有点不一样。
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/26470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解Swarm 集群管理

Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API&#xff0c;所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 支持的工具包括但不限…

前端安全XSS和CSRF讲解

文章目录 XSSXSS攻击原理常见的攻击方式预防措施 CSRFCSRF攻击原理常见攻击情景预防措施&#xff1a; CSRF和XSS的区别 XSS 全称Cross Site Scripting&#xff0c;名为跨站脚本攻击。为啥不是单词第一个字母组合CSS&#xff0c;大概率与样式名称css进行区分。 XSS攻击原理 不…

框框大学之——教育技术学

清一色劝退的教育技术学。。。。。。 https://www.kkdaxue.com/?current1&major%E6%95%99%E8%82%B2%E6%8A%80%E6%9C%AF%E5%AD%A6&pageSize10&sortFieldcreateTime&sortOrderdescend 总结&#xff1a; 1 杂而不经 2 摆烂劝退居多 3 适合躺平 4 考公不行 5 要多…

python 将excel 多行进行分组合并

def exc():"""# 需要用到分组的概念:将角色和业务单据的进行分组,结果合并为一行"""df pd.read_excel(test33.xlsx)# 设置需要分组的字段cols [姓名, 科目]#agg() 其中的参数字段为之后输出的表格中的列字段df df.groupby(cols).agg({姓名: f…

Wordpress升级版本后插件和主题常见出错及处理方法整理【持续更新】

Wordpress报错怎么解决&#xff1f; 一般常用的排查方法&#xff1a; 暂时禁用所有插件&#xff1b;将主题更改为默认主题&#xff1b; 修改wp-config.php文件&#xff1b;更新固定链接设置&#xff0c;确保设置正确&#xff1b;检查.htaccess文件是否存在且是否可写&#xf…

QtAV for ubuntu16.04

下载ubuntu https://releases.ubuntu.com/16.04/ubuntu-16.04.7-desktop-amd64.iso 下载ffmpeg https://ffmpeg.org/download.html 下载QtAV https://github.com/wang-bin/QtAV/releases 更新 sudo apt update 安装库 sudo apt-get install libglu1-mesa-dev freeglut3-dev…

ETHERCAT转PROFIBUS连接到300plc的配置方法

由于捷米JM-DP-ECT&#xff0c;是自主研发的一款PROFIBUS从站功能的通讯网关&#xff0c;它的主要功能是将ETHERCAT设备接入到PROFIBUS网络中生产环境比较复杂有多个设备采用不同的协议这极大的阻碍了&#xff0c;各个设备的数据互通。 JM-DP-ECT这个小小的网关可不简单&#x…

【计算机视觉|风格迁移】PP-GAN:使用GAN的地标提取器将韩国人像的风格转化为身份证照片

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;PP-GAN : Style Transfer from Korean Portraits to ID Photos Using Landmark Extractor with GAN 链接&#xff1a;[2306.13418] PP-GAN : Style Transfer from Korean Portraits to ID…

漫画 | TCP/IP之大明邮差

后记&#xff1a; 1973年&#xff0c;卡恩与瑟夫开发出了网络中最核心的两个协议&#xff1a;TCP协议和IP协议&#xff0c;随后为了验证两个协议的可用性&#xff0c;他们做了一个实验&#xff0c;在多个异构网络中进行数据传输&#xff0c;数据包在经过近10万公里的旅程后到达…

laravel安装composer依赖

一.问题描述 拉取的新项目没有依赖 项目根目录没有vendor目录 报错 二.安装composer,拉取依赖 1.如果没有composer先去下载 官网地址:Packagist / Composer 中国全量镜像 我的博客安装composer:composer最新版本安装_荒-漠的博客-CSDN博客 2.进入项目根目录cmd或者在项目中…

【云原生】详细学习Docker-Swarm部署搭建和基本使用

个人主页&#xff1a;征服bug-CSDN博客 kubernetes专栏&#xff1a;云原生_征服bug的博客-CSDN博客 目录 Docker-Swarm编排 1.概述 2.docker swarm优点 3.节点类型 4.服务和任务 5.路由网格 6.实践Docker swarm 1.概述 Docker Swarm 是 Docker 的集群管理工具。它将 Doc…

PHP国外在线教育系统源码 在线课程系统源码 直播课程系统源码提供在线课程,现场课程,测验

Proacademy是在线教育一体化的解决方案&#xff0c;用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程&#xff0c;现场课程&#xff0c;测验等等&#xff0c;并有一个基于实际业务需要的高级认证插件&#xff0c;程序基于Laravel强大的安全框…

用P2PNet进行大豆计数

文章目录 介绍在大豆数据集上可视化结果环境准备数据集结构数据链接模型训练模型推理代码介绍 这个仓库包含了P2PNet(Rethinking Counting and Localization in Crowds: A Purely Point-Based Framework)在大豆数据集上的pytorch实现。 在大豆数据集上可视化结果 环境准备 …

分享一个霓虹灯拨动开关

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title> 霓虹灯拨动开关</title><style>* {border: 0;box-sizin…

WSL安装

WSL安装 1.Microsoft store 安装 1.1 启动WSL功能 在【程序和功能 -> 启用或关闭 Windows 功能】中勾选【适用于 Linux 的 Windows 子系统】 1.2 Store中下载安装 在 Microsoft Store 中下载并安装需要的 Linux 发行版 2.不使用Store安装WSL 注&#xff1a;1.1也要…

激活函数总结(一):ReLU及其变体

激活函数介绍&#xff08;一&#xff09; 1 引言2 常用激活函数介绍2.1 Sigmoid激活函数2.2 Tanh激活函数2.3 ReLU激活函数2.4 Leaky ReLU激活函数2.5 Parametric ReLU&#xff08;PReLU&#xff09;激活函数2.6 Swish激活函数 3. 总结 介绍的激活函数都在目录中有所展示&#…

Flutter编译一直显示Running Gradle task ‘assembleDebug‘

&#x1f525; 目前开发的Android Studio版本 &#x1f525; &#x1f525; 当前Flutter SDK 版本 &#x1f525; Flutter 3.10.6 • channel stable • https://github.com/flutter/flutter.git Framework • revision f468f3366c (3 周前) • 2023-07-12 15:19:05 -0700 Eng…

用户权限提升Sudo

目录 前言 一、su的用法 二、sudo提权 总结 前言 sudo是linux系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具&#xff0c;如halt&#xff0c;reboot&#xff0c;su等等。换句话说通过此命令可以让非root的用户运行只有root才有权限…

XML(eXtensible Markup Language)

目录 为什么需要XML? 一 XML语法 1.文档声明 2.元素 语法: 3.属性 4.注释 5.CDATA节 二 树结构 三 转义字符 四 DOM4J 1.XML解析技术 2.dom4j介绍 3.dom4j基本使用 XML 指可扩展标记语言&#xff08;eXtensible Markup Language&#xff09;。 XML 被设计用来传…