怎么获取img标签的图片文件大小

如题;
不使用jq,不通过input点击上传。原生怎么获取,网上说的filesize获取不到啊;

1个回答

weixin_45177591
肉肉肉包子一枚 谢谢,input点击上传能有files,但是我想在一个图片列表中或者swiper中判断图片的size大小从而判断图片链接是否有效,不通过点击上传的方法呢;
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
IE下img标签显示图片问题

子页面有个 ``` <img id="img" style="width:100%;height:98%;" src="ftp://192.168.1.10/Pictures/155330-878-(%C0%B6%BE%A9A12KAJ)42-%C8%AB%BE%B0%CD%BC.jpg" /> ``` 显示的是FTP的图片,主页面是easyui的tabs,标签加载子页面。 在chrome下,子页面单独运行,没问题,主页面tab加载子页面运行也没问题。 在IE下,子页面单独运行图片会出来,主页面加载图片就出不来。 很是无奈

Img标签无图片时,宽度不受控制

![图片说明](https://img-ask.csdn.net/upload/201709/11/1505115040_338532.png)

关于html中img标签的alt属性

萌新请教各界大佬,这个img标签里的alt属性不是表示图像的提示信息吗,但为什么以下代码完成后鼠标移到浏览器中图像上无法显示alt中的信息,而必须再加上title才行 无法显示:<body> <div align="center"> <img src="链接标记图片.gif" border="2" width="120" height="120" alt="激情与理性的边缘"/> </div> </body> 正确:<body> <div align="center"> <img src="链接标记图片.gif" border="2" width="120" height="120" alt="激情与理性的边缘" title="激情与理性的边缘" /> </div> </body>

ckfinder中配置文件的<maxSize>标签如何写,才能将上传图片大小限制到100KB?

###我已经试过了写100KB 、102400B,没有起作用。 ![图片说明](https://img-ask.csdn.net/upload/201712/14/1513231801_902331.png)

a标签 设置下载 属性 下载失败

背景:项目为vue3 前端。 需要下载的资源不是后台传过来的 是前端的一个excel文件 ![图片说明](https://img-ask.csdn.net/upload/201909/15/1568557270_274026.png) 前端可以用这种形式引用到assets中的图片,但是我用同样的方式想去下载这个图片 却下载不到,提示未发现文件 ![图片说明](https://img-ask.csdn.net/upload/201909/15/1568557385_517572.png) ![图片说明](https://img-ask.csdn.net/upload/201909/15/1568557469_166563.png) 我是想下载excel没成功 然后想试试既然图片可以正确引用我就下载一个图片吧。结果拿图片试验了一下 但是还是不行。 我本是想在src同级别目录下创建一个static的静态资源文件夹,在这里面放excel文件然后用下图的方式去下载,还是提示同样的错误. ![图片说明](https://img-ask.csdn.net/upload/201909/15/1568557612_72291.png) 我看了一下工程的vue.config.js 文件 里面没有对static文件夹进行配置。 大神们 有什么办法 让我能下载到前端的静态资源呢?

不用<input type="file">怎样获取上传图片的尺寸?

如题,怎样在不使用 input type="file"的情况下获取上传图片的尺寸? 前段代码: < div> < label for="img" class="col-xs-2 col-sm-2 control-label">品牌图片</label> < div class="col-xs-10 col-sm-10"> < input type="hidden" name="bgImg" id="bgImg" value="${brand.bgImg}" class="webuploader-input" fileType="image" fileLimit="1" fileName="品牌图" uploadUrl="${adminPath}/upload/image" isvalid="yes" checkexpession="NotNull" errormsg="品牌图片" prefixUrl="${fileHost}"/> < p style="font-size:14px;color:red;">图片尺寸:750*1625</p> < /div> < /div> 前端以前用的是type="hidden",但是我不知道怎么获取,type="file"我会 ![图片说明](https://img-ask.csdn.net/upload/201812/20/1545282468_348662.png)

关于不同浏览器中ico格式图片的显示问题

举例 一段简单的代码 \<img src="1.ico" style="width:48px;height:48px;" > 这里ico并非作为常用的 \<link> 里的一个图标,而是作为一个单独的图显示在网页里面。 然而因为ico拥有几种不同的图层通道,在IE中,似乎是显示最小的,所以模糊掉了?在Firefox和Chrome中则正常显示。 ![图片说明](https://img-ask.csdn.net/upload/201710/11/1507690342_106829.png) 图中左边为Firefox和Chrome中的显示效果,而右边是IE中的效果。 再举例,如果直接访问该图片 http://xxx.com/image/2.ico 实际上该图的大小是256X256 也就是图层通道的最大层。无论是IE还是FF都可以正常的显示出该图。 那么也就是说:如果该ico在没有 48X48 的时候。IE似乎取到了最小的一层,所以失真。有办法解决吗? PS:png暂时不要想了,就ico有办法救国吗...正在思考如何曲线救国

H5 input File 拿不到回调的值

关于H5 input File 标签在某些手机上没办法回调 ![图片说明](https://img-ask.csdn.net/upload/201904/30/1556611255_652788.jpg) 这个方法是input File 改变后的替换IMG的方法,但是在某些小米手机上 无法获取到拿到的base64值,在IOS,大部分android机上都没有问题, 只有某些小米手机不行。。。有个小米手机更过分,点击后进入选择图片的界面 连图片都没有, dealImage()方法是用来压缩图片大小的 <input class="fileChoose" id="f_file" type="file" name="image" accept="image/*"/> <label for="f_file"> <img src="../../images/tianjia.png" class="se1" type="button" value="" id="showImg" /> </label> 这是input 标签 总结一下:就是在file标签改变后拿不到base64,并且目前遇到只有小米有问题。。 有大佬遇到过吗。。

请问一下关于设置HTML背景图片的URL如何选择

我想要通过引入css文件里的样式来给DIV设置背景,我通过行内样式可以实现,但在外部的CSS文件里不知道该如何设置URL。下面是我的文件目录 ![图片说明](https://img-ask.csdn.net/upload/202003/07/1583541447_537350.png) 我在export.html中可以通过 background: url(../images/leftUp-.png);引入images里的图片,但想要通过先把CSS样式放到export.css中,然后在用class选择器引入样式,不知道该如何设置在export.css中的URL。 想请问一下这个URL的原理。

Easyui文件上传的问题

![图片说明](https://img-ask.csdn.net/upload/201611/23/1479890375_160350.png) 这个是我目前打算需要的样子 ![图片说明](https://img-ask.csdn.net/upload/201611/23/1479890400_602070.png) 因为没有在input标签中加上type=“file”的缘故把 ![图片说明](https://img-ask.csdn.net/upload/201611/23/1479890639_837622.png) 抛了空指针异常 ![图片说明](https://img-ask.csdn.net/upload/201611/23/1479890501_805016.png) 但是我去html页面中加入type=“file” ![图片说明](https://img-ask.csdn.net/upload/201611/23/1479890745_20470.png) 格式就变了,而且我好像怎么选择文件最后都是未选择 ![图片说明](https://img-ask.csdn.net/upload/201611/23/1479890779_959729.png) 拜托各位帮帮忙啦

fileObj = document.getElementById("file").files[0]; 我想直接把地址给这个变量

``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>压缩图片demo</title> </head> <body> <img id="img" src=""> <input id="file" type="file" onchange="compress()"> </body> <script> // 对图片进行压缩 function compress() { if(typeof FileReader=='undifined')            //判断浏览器是否支持filereader      {         result.innerHTML="<p>抱歉,你的浏览器不支持 FileReader</p>";         return false;     }     var file=document.getElementById("file").files[0];     if(!/image\/\w+/.test(file.type))            //判断获取的是否为图片文件     {         alert("请确保文件为图像文件");         return false;     } fileObj = document.getElementById('file').files[0] //上传文件的对象 reader = new FileReader() reader.readAsDataURL(fileObj) reader.onload = function(e) { image = new Image() //新建一个img标签(还没嵌入DOM节点) image.src = e.target.result image.onload = function() { canvas = document.createElement('canvas'), context = canvas.getContext('2d'), imageWidth = image.width / 10, //压缩后图片的大小 imageHeight = image.height / 10, data = '' canvas.width = imageWidth canvas.height = imageHeight context.drawImage(image, 0, 0, imageWidth, imageHeight) data = canvas.toDataURL('image/jpeg') //压缩完成 document.getElementById('img').src = data } } } </script> </html> ``` 上面是压缩图片的案例,我 不想用按钮,想直接把“1.jpg”赋值给fileObj,请问该怎么办??

页面上a标签href给了一个链接,本地调试没问题,放到服务器上之后,点击这个a标签会变成下载

``` <li> <a href="http://www.cninfo.com.cn/new/disclosure/stock?orgId=gssz0000963&stockCode=000963&tabName=data&type=info"> <div> <img src="~/images/股本结构@2x.png" srcset="~/images/股本结构@2x.png 2x, ~/images/股本结构@3x.png 3x" alt=""> </div> </a> </li> ``` vs本地调试没问题,本地iis发布跳转也没问题,但是放到服务器上之后点击这个a标签就会下载一个stock的文件 大小为0kb,不知道怎么解决,求救

kindeditor成功上传图片后,在富文本框内无法正常显示

我直接下载的demo,用servlet改写了jsp,没有问题,但是现在用springboot,就出现了这种问题。 不废话,直接上代码,恳请各位大神的指导: html: ``` <link rel="stylesheet" href="/kindeditor-master/themes/default/default.css" /> <link rel="stylesheet" href="/kindeditor-master/plugins/code/prettify.css" /> <script charset="utf-8" src="/kindeditor-master/kindeditor-all.js"></script> <script charset="utf-8" src="/kindeditor-master/lang/zh-CN.js"></script> <script charset="utf-8" src="/kindeditor-master/plugins/code/prettify.js"></script> <script> KindEditor.ready(function(K) { K.create('textarea[name="content1"]', { cssPath : '/kindeditor-master/plugins/code/prettify.css', uploadJson : '/kindEditor/upLoad', fileManagerJson : '/kindEditor/Manager', allowFileManager : true,//是否允许浏览服务器上传文件 //resizeType : 0,是否可改变编辑器大小0不可以,1可改高度,2都可以。默认为2 afterCreate : function(msg) { var self = this; K.ctrl(document, 13, function() { self.sync(); document.forms['example'].submit(); }); K.ctrl(self.edit.doc, 13, function() { self.sync(); document.forms['example'].submit(); }); } }); prettyPrint(); }); </script> ``` 这是文件上传类: ``` @Controller @RequestMapping("/kindEditor") public class UpLoadJsonAction { @RequestMapping("/upLoad") public void upLoadImage(HttpServletRequest request, HttpServletResponse response){ try { PrintWriter out = response.getWriter(); //文件保存目录路径 String savePath = request.getRealPath("/") + "attached/"; //文件保存目录URL String saveUrl = request.getContextPath() + "/attached/"; //定义允许上传的文件扩展名 HashMap<String, String> extMap = new HashMap<String, String>(); extMap.put("image", "gif,jpg,jpeg,png,bmp"); extMap.put("flash", "swf,flv"); extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"); extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2"); //最大文件大小 long maxSize = 1000000; response.setContentType("text/html; charset=UTF-8"); if(!ServletFileUpload.isMultipartContent(request)){ out.println(getError("请选择文件。")); return; } //检查目录 File uploadDir = new File(savePath); if(!uploadDir.isDirectory()){ out.println(getError("上传目录不存在。")); return; } //检查目录写权限 if(!uploadDir.canWrite()){ out.println(getError("上传目录没有写权限。")); return; } String dirName = request.getParameter("dir"); if (dirName == null) { dirName = "image"; } if(!extMap.containsKey(dirName)){ out.println(getError("目录名不正确。")); return; } //创建文件夹 savePath += dirName + "/"; saveUrl += dirName + "/"; File saveDirFile = new File(savePath); if (!saveDirFile.exists()) { saveDirFile.mkdirs(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String ymd = sdf.format(new Date()); savePath += ymd + "/"; saveUrl += ymd + "/"; File dirFile = new File(savePath); if (!dirFile.exists()) { dirFile.mkdirs(); } //创建一个DiskFileItemFactory工厂 FileItemFactory factory = new DiskFileItemFactory(); //创建一个文件上传解析器 ServletFileUpload upload = new ServletFileUpload(factory); //设置编码 upload.setHeaderEncoding("UTF-8"); // //判断提交上来的数据是否是上传表单的数据 // if(!ServletFileUpload.isMultipartContent(request)){ // //按照传统方式获取数据 // return; // } //判断提交上来的是list数据 // List items = upload.parseRequest(request); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator item = multipartRequest.getFileNames(); // Iterator itr = items.iterator(); while (item.hasNext()) { String fileName = (String) item.next(); MultipartFile file = multipartRequest.getFile(fileName); // 检查文件大小 if (file.getSize() > maxSize) { out.println(getError("上传文件大小超过限制。")); return; } // 检查扩展名 String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase(); if (!Arrays. asList(extMap.get(dirName).split(",")).contains(fileExt)) { out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。")); return; } SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt; try { File uploadedFile = new File(savePath, newFileName); ByteStreams.copy(file.getInputStream(), new FileOutputStream(uploadedFile)); } catch (Exception e) { } JSONObject obj = new JSONObject(); obj.put("error", 0); obj.put("url", saveUrl + newFileName); out.println(obj.toJSONString()); } } catch (Exception e) { e.printStackTrace(); } } //上传报错的提示方法 private String getError(String message) { JSONObject obj = new JSONObject(); obj.put("error", 1); obj.put("message", message); return obj.toJSONString(); } } ``` 这是文件管理类: ``` @Controller @RequestMapping("/kindEditor") public class FileManagerJsonAction { @RequestMapping("/Manager") public void fileManager(HttpServletRequest request, HttpServletResponse response){ PrintWriter out = null; try { out = response.getWriter(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //根目录路径 String rootPath = request.getRealPath("/") + "attached/"; //根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/ String rootUrl = request.getContextPath() + "/attached/"; //图片扩展名 String[] fileTypes = new String[]{"gif", "jpg", "jpeg", "png", "bmp"}; //要打开的文件夹 String dirName = request.getParameter("dir"); if (dirName != null) { if(!Arrays.<String>asList(new String[]{"image", "flash", "media", "file"}).contains(dirName)){ out.println("无效的目录"); return; } rootPath += dirName + "/"; rootUrl += dirName + "/"; File saveDirFile = new File(rootPath); if (!saveDirFile.exists()) { saveDirFile.mkdirs(); } } //根据path参数,设置各路径和URL String path = request.getParameter("path") != null ? request.getParameter("path") : ""; String currentPath = rootPath + path; String currentUrl = rootUrl + path; String currentDirPath = path; String moveupDirPath = ""; if (!"".equals(path)) { String str = currentDirPath.substring(0, currentDirPath.length() - 1); moveupDirPath = str.lastIndexOf("/") >= 0 ? str.substring(0, str.lastIndexOf("/") + 1) : ""; } //排序形式,name or size or type String order = request.getParameter("order") != null ? request.getParameter("order").toLowerCase() : "name"; //不允许使用..移动到上一级目录 if (path.indexOf("..") >= 0) { out.println("Access is not allowed."); return; } //最后一个字符不是/ if (!"".equals(path) && !path.endsWith("/")) { out.println("Parameter is not valid."); return; } //目录不存在或不是目录 File currentPathFile = new File(currentPath); if(!currentPathFile.isDirectory()){ out.println("Directory does not exist."); return; } //遍历目录取的文件信息 List<Hashtable> fileList = new ArrayList<Hashtable>(); if(currentPathFile.listFiles() != null) { for (File file : currentPathFile.listFiles()) { Hashtable<String, Object> hash = new Hashtable<String, Object>(); String fileName = file.getName(); if(file.isDirectory()) { hash.put("is_dir", true); hash.put("has_file", (file.listFiles() != null)); hash.put("filesize", 0L); hash.put("is_photo", false); hash.put("filetype", ""); } else if(file.isFile()){ String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); hash.put("is_dir", false); hash.put("has_file", false); hash.put("filesize", file.length()); hash.put("is_photo", Arrays.<String>asList(fileTypes).contains(fileExt)); hash.put("filetype", fileExt); } hash.put("filename", fileName); hash.put("datetime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified())); fileList.add(hash); } } if ("size".equals(order)) { Collections.sort(fileList, new SizeComparator()); } else if ("type".equals(order)) { Collections.sort(fileList, new TypeComparator()); } else { Collections.sort(fileList, new NameComparator()); } JSONObject result = new JSONObject(); result.put("moveup_dir_path", moveupDirPath); result.put("current_dir_path", currentDirPath); result.put("current_url", currentUrl); result.put("total_count", fileList.size()); result.put("file_list", fileList); response.setContentType("application/json; charset=UTF-8"); out.println(result.toJSONString()); } } ``` 正常的效果应该是上传完图片后在富文本框内也是正常显示图片。现在可以上传,但是富文本框内的图片无法正常显示。在文件管理里面,可以找到相应的文件夹或者图片,但是图片也无法正常显示。 结果如下: ![图片说明](https://img-ask.csdn.net/upload/201702/28/1488263695_341596.png) ![图片说明](https://img-ask.csdn.net/upload/201702/28/1488263482_296738.png)

使用layui的富文本编辑器 上传图片后不能显示图片 只能显示图片名

![图片说明](https://img-ask.csdn.net/upload/201903/23/1553320913_930043.png)![图片说明](https://img-ask.csdn.net/upload/201903/23/1553320929_255574.png) <div class="layui-form-item layui-form-text"> <label class="layui-form-label">历史</label> <div class="layui-input-block"> <textarea id="history" name="article_desc" lay-verify="article_desc" placeholder="" class="layui-textarea">请输入历史</textarea> </div> <input type="hidden" id="introCont"> </div> ``` <!--编辑器--> <script> layui.use(['layedit','form'], function(){ var layedit = layui.layedit,$ = layui.jquery,form = layui.form; //构建一个默认的编辑器 layedit.set({ uploadImage: { url: '/File/uploadImg', type: 'post' } }); var index = layedit.build('history',{tool: [ 'strong' //加粗 ,'italic' //斜体 ,'underline' //下划线 ,'del' //删除线 ,'|' //分割线 ,'left' //左对齐 ,'center' //居中对齐 ,'right' //右对齐 ,'link' //超链接 ,'unlink' //清除链接 ,'face' //表情 ,'image' //插入图片 // ,'help' //帮助 ]}); //自定义验证规则 form.verify({ history: function(value){ if(value.length < 0){ return '历史不能为空'; } } ,article_desc: function(value){ layedit.sync(index); } }); //编辑器外部操作 var active = { content: function(){ //alert(layedit.getContent(index)); //获取编辑器内容 var str = layedit.getContent(index); //赋值到隐藏的标签 $("#introduce").val(""+ str +""); //console.log("视频简介内容:"+ $("#introCont").val()) } }; $('.layui-textarea').on('click', function(){ var type = $(this).data('type'); active[type] ? active[type].call(this) : ''; }); }); </script> ``` package com.yunce.web.controller; import com.yunce.web.Setting; import com.yunce.web.utils.FileUpload; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2019/3/22. */ @Controller @RequestMapping(value = "/File") public class FileController { public static Logger LOG = LoggerFactory.getLogger(FileController.class); @Autowired private Setting setting; @RequestMapping(value = "/uploadImg", method = RequestMethod.POST) @ResponseBody public Map<String, Object> uploadImg(@RequestParam (value = "file")MultipartFile[] files, HttpServletRequest request) { String url = setting.local_url; String saveFilePath = setting.image_dir; Map<String, Object> map = new HashMap<>(); Map<String, Object> data = new HashMap<>(); for (int i = 0, length = files.length; i < length; i++) { if (files[i] != null && !files[i].isEmpty()) { LOG.info("图片大小:" + files[i].getSize() / 1024 + "KB"); //获取图片的文件名 String fileName = files[i].getOriginalFilename(); //获取图片的扩展名 String extensionName = fileName.substring(fileName.lastIndexOf(".") + 1); //新的图片文件名 = 年月日+随机数 +"."图片扩展名 String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date()); Integer num = (int) ((Math.random() * 9 + 1) * 100000); String newFileName = String.valueOf(dateStr + num) + "." + extensionName; FileUpload.saveFile(newFileName, files[i], saveFilePath); url = url + "/" + newFileName; data.put("src", url); data.put("title", newFileName); map.put("code", 0); map.put("msg", "上传成功"); map.put("data", data); } } return map; } } /* String tempPath="f:/upload"; Map<String,Object> map=new HashMap<>(); Map<String,Object> data=new HashMap<>(); String oldName=file.getOriginalFilename(); System.out.println("图片名字:oldName is:"+oldName); String tempName = System.currentTimeMillis() + ""; System.out.println("tempName is:" +tempName); //以文件名命名的文件夹 String tempFileDir = tempPath + "/" + tempName; File parentFileDir = new File(tempFileDir); //若不存在 就新建 if (!parentFileDir.exists()) { parentFileDir.mkdirs(); } //新文件名 获取当前名+文件后缀 String newName = tempName + oldName.substring(oldName.lastIndexOf(".")); //数据库img的src String src="/upload/"+tempName+"/"+newName; System.out.println("图片名字:newName is:"+newName); try { //存放文件 (文件名,文件) file.transferTo(new File(tempFileDir,newName)); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }*/ ``` ```

web项目部署到云服务器上页面的video标签无法播放视频,怎么解决?

最近在做了一个前端页面,页面里内嵌了video 标签,src引用的就是本地的视频,视频在Tomcat服务器里边。 (项目是ssm框架/前端页面没有用框架,就是jsp页面) 1. 我在我本地运行来了访问没问题,视频可以播放; 2. 在局域网中运行起来,别的电脑访问也可以播放; 3. 但是当我把项目部署到做了端口映射的Centos7系统下的Tomcat里,然后启动项目,电脑浏览器远程访问项目的时候视频就加载不出来了。 4. (但是比较怪的是,在微信里/qq里直接打开链接视频可以加载) 视频大小:3-5M **下边是标签内容:** ``` <video src="..${course.url}" controls="controls" mediatype="video" poster="..${course.image}" controlsList="nodownload"></video> ``` 截图: 1. ![图片说明](https://img-ask.csdn.net/upload/201912/07/1575727174_585751.png) 2. ![图片说明](https://img-ask.csdn.net/upload/201912/07/1575727197_418324.png) 3. ![图片说明](https://img-ask.csdn.net/upload/201912/07/1575727213_317435.png) 4. ![图片说明](https://img-ask.csdn.net/upload/201912/07/1575727271_136734.png)

萌新求助一个关于Tkinter显示图片的问题

我想做一个改变图片大小的函数,但是问题是,只显示最后一张图片 代码是这个样子的: ``` from Tkinter import * from PIL import Image, ImageTk from photoResize import resize def change(photo): w, h = photo.size w_box=40 h_box=40 global photo_resized,photo_image,photoLabel photo_resized = resize(w, h, w_box, h_box, photo) photo_image = ImageTk.PhotoImage(photo_resized) photoLabel = Label(f, image=photo_image, width=w_box, height=h_box) return photoLabel r=Tk() f=Frame(r,width=600,height=150,relief="groove") f.grid() Q = Image.open(r'Q.gif') QLabel = change(Q) QLabel.grid(row=1,column=0) W = Image.open(r'W.gif') WLabel = change(W) WLabel.grid(row=1,column=1) r.mainloop() ``` 这个代码目前放进来两张图片,但是运行以后只显示最一张“W.gif”![图片说明](https://img-ask.csdn.net/upload/201912/10/1575947715_407170.png) 但是如果我删掉代码中的 ``` W = Image.open(r'W.gif') WLabel = change(W) WLabel.grid(row=1,column=1) ``` 显示出的就是第一张图片了 ![图片说明](https://img-ask.csdn.net/upload/201912/10/1575947804_134019.png)

求助, HTML5 embed 标签显示的pdf的DOMO怎么操作?

查看控制台,显示的是一个新的HTML![图片说明](https://img-ask.csdn.net/upload/201704/22/1492826923_268195.png) ![图片说明](https://img-ask.csdn.net/upload/201704/22/1492826968_862530.png)

手写字的识别代码出现错误,不知道哪里错了?

**下载的代码和数据集,只修改了路径,但是出现明明有22的样本,每个文件夹里面10张图,** 但是 # **当numTrainFiles = 17 ;% 每一个数字有22个样本,取17个样本作为训练数据时** 错误使用 matlab.io.datastore.ImageDatastore/splitEachLabel (line 211) 比例值之和(17)不能超过具有最少文件数(10)的标签中的文件数。 请使用 COUNTEACHLABEL 和 MIN 查看与标签关联的最小文件数。 出错 newff0312 (line 15) [imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize') # **修改numTrainFiles = 9时,** # 错误使用 trainNetwork (line 170) # 无效的训练数据。最后一层的输出大小(10)与类的数量(22)不匹配。 # 出错 newff0312 (line 55) net = trainNetwork(imdsTrain, layers ,options); %训练数据,神经元设计,训练参数 ## **修改digitDatasetPath = fullfile('D:\201910\CT\', '/train1/');** ## 这个路径读取的是dcm图,但是出现错误 错误使用 imageDatastore (line 125) 输入文件夹或文件包含非标准的文件扩展名。 使用 FileExtensions 名称-值对组以包含非标准的文件扩展名。 出错 newff0315 (line 7) imds = imageDatastore(digitDatasetPath, ... # 下载的代码 ``` %% 导入数据 digitDatasetPath = fullfile('D:\201910\CT\', '/hwDataset/'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true,'LabelSource','foldernames');% 采用文件夹名称作为数据标记 %,'ReadFcn',@mineRF % 数据集图片个数 countEachLabel(imds) numTrainFiles = 9 ;% 每一个数字有22个样本,取17个样本作为训练数据 [imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize'); % 查看图片的大小 img=readimage(imds,1); size(img) %% 定义卷积神经网络的结构 layers = [ % 输入层 imageInputLayer([28 28 1]) %输入图片大小为28*28,灰度图片通道为1 % 卷积层 (特征映射大小计算方式32-5+1=28) convolution2dLayer(5,6,'Padding',2) %卷积核5*5,提取6种特征映射, batchNormalizationLayer %padding图片周围补零以保持还是这次卷积之后特征映射28*28,28-5+4+1 reluLayer maxPooling2dLayer(2,'stride',2) %下采样核2*2 convolution2dLayer(5, 16) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'stride',2) convolution2dLayer(5, 120) batchNormalizationLayer reluLayer % 最终层 fullyConnectedLayer(10) softmaxLayer classificationLayer]; %% 训练神经网络 % 设置训练参数 options = trainingOptions('sgdm',... %最优化方法 'maxEpochs', 50, ... %重复次数 'ValidationData', imdsValidation, ...%验证的数据 'ValidationFrequency',5,... %验证频率 'Verbose',false,... %是否显示中间结果 'Plots','training-progress');% 显示训练进度 % 训练神经网络,保存网络 net = trainNetwork(imdsTrain, layers ,options); %训练数据,神经元设计,训练参数 save 'CSNet.mat' net %% 标记数据(文件名称方式,自行构造) mineSet = imageDatastore('D:\201910\CT\hwDataset\hw9\', 'FileExtensions', '.jpg',... 'IncludeSubfolders', false);%%,'ReadFcn',@mineRF mLabels=cell(size(mineSet.Files,1),1); for i =1:size(mineSet.Files,1) [filepath,name,ext] = fileparts(char(mineSet.Files{i})); mLabels{i,1} =char(name); end mLabels2=categorical(mLabels); mineSet.Labels = mLabels2; %% 使用网络进行分类并计算准确性 % 手写数据 YPred = classify(net,mineSet); YValidation =mineSet.Labels; % 计算正确率 accuracy = sum(YPred ==YValidation)/numel(YValidation); % 绘制预测结果 figure; nSample=10; ind = randperm(size(YPred,1),nSample); for i = 1:nSample subplot(2,fix((nSample+1)/2),i) imshow(char(mineSet.Files(ind(i)))) title(['预测:' char(YPred(ind(i)))]) if char(YPred(ind(i))) ==char(YValidation(ind(i))) xlabel(['真实:' char(YValidation(ind(i)))]) else xlabel(['真实:' char(YValidation(ind(i)))],'color','r') end end % 伸缩+反色 % function data =mineRF(filename) % img= imread(filename); % data=uint8(255-rgb2gray(imresize(img,[28 28]))); % % end % 二值化 % function data =mineRF(filename) % img= imread(filename); % data=imbinarize(img); % % end ``` # 得到的错误结果 ``` ans = 22×2 table Label Count _____ _____ hw1 10 hw10 10 hw11 10 hw12 10 hw13 10 hw14 10 hw15 10 hw16 10 hw17 10 hw18 10 hw19 10 hw2 10 hw20 10 hw21 10 hw23 10 hw3 10 hw4 10 hw5 10 hw6 10 hw7 10 hw8 10 hw9 10 ans = 28 28 错误使用 trainNetwork (line 170) 无效的训练数据。最后一层的输出大小(10)与类的数量(22)不匹配。 出错 newff0312 (line 55) net = trainNetwork(imdsTrain, layers ,options); %训练数据,神经元设计,训练参数 >> ```

问题不大,代码有点长,求大神解答:tensorflow生成tfrecord文件运行不下去

运行结果如下:![图片说明](https://img-ask.csdn.net/upload/201809/01/1535791673_447681.jpg) 完整代码如下: ``` #验证集数量 _NUM_TEST = 100 #随机种子 _RANDOM_SEED = 0 #数据块 _NUM_SHARDS = 3 #数据集路径 DATASET_DIR = "C:/Users/ASUS/TF实战(炼石成金)/8-对谷歌inception-v3模型从头开始训练/slim/images/" #标签文件名字 LABELS_FILENAME = r"C:\Users\ASUS\TF实战(炼石成金)\8-对谷歌inception-v3模型从头开始训练\slim\images\labels" #定义tfrecord文件的路径+名字 def _get_dataset_filename(dataset_dir, split_name, shard_id): output_filename = 'image_%s_%05d-of-%05d.tfrecord' % (split_name, shard_id, _NUM_SHARDS) return os.path.join(dataset_dir, output_filename) #判断tfrecord文件是否存在 def _dataset_exists(dataset_dir): for split_name in ['train', 'test']: for shard_id in range(_NUM_SHARDS): #定义tfrecord文件的路径+名字 output_filename = _get_dataset_filename(dataset_dir, split_name, shard_id) if not tf.gfile.Exists(output_filename): return False return True #获取所有文件以及分类 def _get_filenames_and_classes(dataset_dir): #数据所在路径目录 directories = [] #分类名称 class_names = [] for filename in os.listdir(dataset_dir): #os.listdir(dataset_dir)列出给出的路径下所有的文件夹或者文件名的名字 #合并文件路径 path = os.path.join(dataset_dir, filename) #判断该路径是否为目录 if os.path.isdir(path): #加入数据目录 directories.append(path) #加入类别名称 class_names.append(filename) photo_filenames = [] #循环每个分类的文件夹 for directory in directories: for filename in os.listdir(directory): path = os.path.join(directory, filename) #把图片的路径加入图片列表 photo_filenames.append(path) return photo_filenames, class_names def int64_feature(values): if not isinstance(values, (tuple, list)): values = [values] return tf.train.Feature(int64_list=tf.train.Int64List(value=values)) def bytes_feature(values): return tf.train.Feature(bytes_list=tf.train.BytesList(value=[values])) def image_to_tfexample(image_data, image_format, class_id): #Abstract base class for protocol messages. return tf.train.Example(features=tf.train.Features(feature={ 'image/encoded': bytes_feature(image_data), 'image/format': bytes_feature(image_format), 'image/class/label': int64_feature(class_id), })) def write_label_file(labels_to_class_names, dataset_dir,filename=LABELS_FILENAME): labels_filename = os.path.join(dataset_dir, filename) with tf.gfile.Open(labels_filename, 'w') as f: for label in labels_to_class_names: class_name = labels_to_class_names[label] f.write('%d:%s\n' % (label, class_name)) #把数据转为TFRecord格式 def _convert_dataset(split_name, filenames, class_names_to_ids, dataset_dir): assert split_name in ['train', 'test'] #计算每个数据块有多少数据 num_per_shard = int(len(filenames) / _NUM_SHARDS) with tf.Graph().as_default(): with tf.Session() as sess: for shard_id in range(_NUM_SHARDS): #定义tfrecord文件的路径+名字 output_filename = _get_dataset_filename(dataset_dir, split_name, shard_id) with tf.python_io.TFRecordWriter(output_filename) as tfrecord_writer: #每一个数据块开始的位置 start_ndx = shard_id * num_per_shard #每一个数据块最后的位置 end_ndx = min((shard_id+1) * num_per_shard, len(filenames)) for i in range(start_ndx, end_ndx): try: sys.stdout.write('\r>> Converting image %d/%d shard %d' % (i+1, len(filenames), shard_id)) sys.stdout.flush() #读取图片 image_data = tf.gfile.FastGFile(filenames[i], 'r').read() #获得图片的类别名称 #os.path.dirname(filenames[i])输出filenames[i]所在的绝对路径 #os.path.basename(path),返回path最后的文件名,这里是类别名称 class_name = os.path.basename(os.path.dirname(filenames[i])) #找到类别名称对应的id class_id = class_names_to_ids[class_name] #生成tfrecord文件 example = image_to_tfexample(image_data, b'jpg', class_id) tfrecord_writer.write(example.SerializeToString()) except IOError as e: print("Could not read:",filenames[i]) print("Error:",e) print("Skip it\n") sys.stdout.write('\n') sys.stdout.flush() if __name__ == '__main__': #判断tfrecord文件是否存在 if _dataset_exists(DATASET_DIR): print('tfcecord文件已存在') else: #获得所有图片以及分类 photo_filenames, class_names = _get_filenames_and_classes(DATASET_DIR) #把分类转为字典格式,类似于{'house': 3, 'flower': 1, 'plane': 4, 'guitar': 2, 'animal': 0} class_names_to_ids = dict(zip(class_names, range(len(class_names)))) #把数据切分为训练集和测试集 random.seed(_RANDOM_SEED) random.shuffle(photo_filenames) training_filenames = photo_filenames[_NUM_TEST:] testing_filenames = photo_filenames[:_NUM_TEST] #数据转换 _convert_dataset('train', training_filenames, class_names_to_ids, DATASET_DIR) _convert_dataset('test', testing_filenames, class_names_to_ids, DATASET_DIR) #输出labels文件 labels_to_class_names = dict(zip(range(len(class_names)), class_names)) write_label_file(labels_to_class_names, DATASET_DIR) ```

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

删库了,我们一定要跑路吗?

在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回。 在 mysql 数据库中,我们知道 binlog 日志记录了我们对数据库的所有操作,所以 binlog 日志就是我们自救的利器。 接下来就来开启程序员自救之路。 想要自救成功,binlog 这把利器一定要好,在自己之前,我们一定要确定我们有 binlog 这把利器,以下就是确保有 bi...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

立即提问
相关内容推荐