-
2020-07-18 10:40:54
C++读取图片文件
这里主要讲述如何在C++编程中读取图片文件,主要介绍两种方式:一种的是C++风格,主要是采用文件流的方式,另一种是C风格,主要采用FILE类的相关操作。小面分别对两种方式进行介绍。
1、文件流读取图片文件
主要的步骤:
- 1、打开图片文件;
- 2、计算图片长度;
- 3、创建内存缓存区;
- 4、读取图片。
对应的头文件:
#include <fstream>
主要用到的函数:
- 1、ifstream.seekg()
seekg:设置输入文件流的文件流指针位置 seekg()定义: istream& seekg (streampos pos);//将读指针设置到pos位置 istream& seekg (streamoff off, ios_base::seekdir way);//将读指针设置为way+off 其中off代表偏移值可以是正负数值,正的表示向后偏移,负的表示向前偏移。而way代表基址,可以是: ios::beg:表示输入流的开始位置 ios::cur:表示输入流的当前位置 ios::end:表示输入流的结束位置
- 2、ifstream.tellg()
tellg: 用于获取文件流中的文件流指针的位置 //tellg()定义: streampos tellg();//返回一个整型数,代表读指针的位置 //example:streampos pos = tellg();//将tellg()返回的指针位置赋值给pos
- 3、ifstream.tellg()
函数原型: read(unsigned char *buf,int num); read()从文件流中读取num个字符到buf指向的缓存中,如果在还未读入 num个字符时就到了文件尾,可以用成员函数gcount()来取得实际读取的字符数。
代码:
#include <fstream> // ifstream, ifstream::in using namespace std; int main(){ // 1. 打开图片文件 ifstream is("test.jpg", ifstream::in | ios::binary); // 2. 计算图片长度 is.seekg(0, is.end); //将文件流指针定位到流的末尾 int length = is.tellg(); is.seekg(0, is.beg); //将文件流指针重新定位到流的开始 // 3. 创建内存缓存区 char * buffer = new char[length]; // 4. 读取图片 is.read(buffer, length); // 到此,图片已经成功的被读取到内存(buffer)中 delete [] buffer; return 0; }
上述程序中出现了ios::binary,关于文件流ios::binary的作用如下:
在创建文件流时,可以显示指定它的打开方式为ios::binary,也就是以二进制方式打开。但是,无论是否指定二进制方式打开文件,读写的最小单位都是字节。那么,它到底起到什么作用呢?
首先,介绍一下二进制方式打开与普通打开方式的区别,两者大的区别在于对换行符的处理方式不同。由于历史原因,Windows操作系统是用两个字符(\r\n)来表示换行符的;而Unix操作系统却是用单个字符(\n)来表示换行符的。因此,在创建文件流时,如果指定了以ios::binary方式打开,那么换行符就是单字符的;否则,就采用Windows操作系统的双字符。
总结来说,以ios::binary方式打开,换行符被解释成\n;反之,换行符被解释成\r\n。
所以为了兼容性,通常在Windous系统中通常使用ios::binary方式打开图像文件;在Unix(或类Unix)操作系统中,指定和不指定ios::binary方式没有区别。
详细的文件流操作参考链接:https://www.cnblogs.com/hjj-fighting/p/10429178.html
2、FILE操作读取图片文件
1、文件类型指针
- 这种方式的文件操作需要一个重要的结构体FILE,FILE在头文件stdio.h中定义。
typedef struct { int level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ int bsize; /* Buffer size */ unsigned char _FAR *buffer; /* Data transfer buffer */ unsigned char _FAR *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE; /* This is the FILE object */
- 可以看到这些文件信息都被保存在一个FILE结构类型。通常我们需要先定义一个指向FILE结构体类型的指针变量。
FILE *fp;
2、文件操作常用函数
-
fopen()函数
- 函数原型为:FILE *fopen(const char *filename, const char *mode);
- 其中参数filename指向要打开的文件名,mode表示文件打开模式的字符串。函数返回一个指向FILE类型的指针,当打开文件时出现了错误,fopen函数都将返回NULL。
文件打开模式:
"r":只能从文件中读数据,该文件必须先存在,否则打开失败。
"w":只能向文件写数据,若指定的文件不存在则创建它,如果存在则先删除它再重建一个新文件。
"a":向文件增加新数据(不删除原有数据),若文件不存在则打开失败,打开时位置指针移到文件末尾。
"r+":可读/写数据,该文件必须先存在,否则打开失败。 "w+":可读/写数据,用该模式打开新建一个文件,先向该文件写数据,然后可读取该文件中的数据。 "a+":可读/写数据,原来的文件不被删去,位置指针移到文件末尾。
打开二进制文件的模式与打开文本文件的含义是一样的,不同的是模式名称里面多一个字母'b’,以表示以二进制形式打开文件。
-
fclose()函数
-
函数原型为:int fclose(FILE *);
-
关闭成功返回值0,否则返回非零值。
-
在执行完文件的操作后,要进行“关闭文件”操作。虽然程序在结束前会自动关闭所有的打开文件,但文件打开过多会导致系统运行缓慢,这时就要自行手动关闭不再使用的文件,来提高系统整体的执行效率。
-
文件的读写操作
- fread()函数
- 函数原型:unsigned int fread(void *buffer, unsigned int size, unsigned int count, FILE *fp);
- 函数功能:从fp所指的文件中读取数据块并存储到buffer所指向的内存中,buffer是待读入数据块存储的起始地址,size是每个数据块的大小(待读入的每个数据块的字节数),count是最多允许读取的数据块个数(每个数据块size个字节),函数返回的是实际读到的数据块个数。
- fwrite()函数
- 函数原型:unsigned int fwrite(const void *buffer, unsigned int size, unsigned int count, FILE *fp);
- 函数功能:将buffer指向的内存中的数据块写入fp所指的文件,buffer是待输出数据块的起始地址,size是每个数据块的大小(待输出的每个数据块的字节数),count是最多允许写入的数据块个数(每个数据块size个字节),函数返回的是实际写入的数据块个数。
fread()函数和fwrite()函数是按数据块的长度来处理输入/输出的,在用文本编辑器打开文本文件时可能因发生字符转换而出现莫名其妙的结果,所以这两个函数通常用于二进制文件的输入/输出。
- fscanf()函数
- 函数原型:int fscanf (FILE *fp, const char *format, ……);
- 第一个参数为文件指针,第二个参数为格式控制符,第三个参数为地址参数表列,后两个参数与函数scanf()的参数相同。
- fprintf()函数
- 函数原型:int fprintf (FILE *fp, onst char *format, ……);
- 第一个参数为文件指针,第二个参数为格式控制参数,第三个参数为输出参数列表,后两个参数和返回值与函数printf()相同。
- 用函数fscanf()和fprintf()进行文件的格式化读写,读写方便容易理解,但输入时要将ASCII字符转换成二进制数,输出时要将二进制数转换为ASCII字符,耗时较多。
- fgets()函数
- 函数原型:char *fgets(char *s,int n,FILE *fp);
- 函数功能:该函数从fp所指的文件中读取字符串并在字符串末尾添加‘\0’,然后存入s,最多读n-1个字符,当读到回车换行符、到达文件尾或读满n-1个字符时,就停止读取。
- 函数返回该字符串的首地址,即指针s的值,读取失败返回空指针NULL。
与gets()不同的是,fgets()从指定的流读取字符串,读到换行符时将换行符也作为字符串的一部分读到字符串中来。
- fputs()函数
- 函数原型:fputs(In_z const char * _Str, Inout FILE * _File);
- 其中str是要输出的字符串,fp是文件指针,字符串末尾'\0'不输出。
- 函数功能:将字符串输出到指针fp所指的文件中。
与puts()不同的是,fputs()不会在写入文件的字符串末尾加上换行符'\n'。
- fgetc()函数
- 函数原型:int fgetc (FILE *fp);
- 函数功能:用于从一个以只读或读写方式打开的文件上读字符,从fp所指的文件中读取一个字符,并将位置指针指向下一个字符,若读取成功,则返回该字符,若读取不成功则返回EOF(EOF是一个符号常量,stdio.h中定义为-1) 。
- fputc()函数
- 函数原型:int fputc(int c, FILE *fp);
- fp是由函数fopen()返回的文件指针,c是要输出的字符(尽管C定义为int型,但只写入低字节)。
- 函数功能:该函数的功能是将字符c写到文件指针fp所指的文件上中,若写入错误返回EOF,否则返回字符c 。
文件的定位
- 为了实现文件的定位,在每一个打开的文件中,都有一个文件位置指针,也称为文件位置标记,用来指向当前读写文件的位置,它保存了文件中的位置信息,当文件进行顺序读写时,每读完一个字节后,该位置指针自动移到下一个字节的位置,当需要随机读写文件数据时,则需强制移动文件位置指针指向特定的位置。
- fseek()函数
- 函数功能:将fp的文件位置指针从fromwhere开始移动offset个字节指示下一个要读取的数据的位置。
- ffset是一个偏移量,它告诉文件位置指针要跳过多少字节,offset为正时,向后移动,为负时,向前移动,ANSIC要求位移量offset是长整型数据(常量数据后要加L)。
- fromwhere用于确定偏移量计算的起始位置,它的可能取值有3种,SEEK_SET或0,代表文件开始处,SEEK_CUR或1,代表文件当前位置,SEEK_END或2,代表文件结尾处。
- 通过指定fromwork和offset的值,可使位置指针移动到文件的任意位置,从而实现文件的随机读取,如果函数fseek()调用成功,则返回0值,否则返回非0值。
fseek() 一般用于二进制文件,在文本文件中由于要进行转换,计算的位置有时会出错。
- rewind()函数
- 函数原型:void rewind(FILE *fp);
- 函数功能:将文件位置指针指向文件首字节,即重置位置指针到文件首部。
- ftell()函数
- 函数原型:long ftell(FILE *fp);
- 函数功能:读取当前文件指针的位置,若函数调用成功,则返回文件的当前读写位置,否则返回-1L,函数ftell()用于相对于文件起始位置的字节偏移量来表示返回的当前位置指针。
代码
#include <stdio.h> using namespace std; int main(){ FILE *in; // 1. 打开图片文件 int = fopen(path, "rb") ifstream is("test.jpg", ifstream::in | ios::binary); // 2. 计算图片长度 fseek(in, 0L, SEEK_END); int len = ftell(in); fseek(in, 0L, SEEK_SET); // 3. 创建内存缓存区 char * buffer = new char[length]; // 4. 读取图片 fread(buffer, sizeof(char), len, in); fclose(in); // 到此,图片已经成功的被读取到内存(buffer)中 delete [] buffer; return 0; }
参考链接
更多相关内容 -
vue图片转file文件类型
2020-11-02 15:08:43vue图片转为File文件类型 供参考,欢迎指教 文章目录vue图片转为File文件类型图片转为base64格式base64格式转为File文件类型使用File文件转base64格式使用返回格式效果图 步骤: 先把图片路径转为base64格式 再把...vue图片转为File文件类型
供参考,欢迎指教
步骤:
- 先把
图片路径
转为base64
格式 - 再把
base64
转为File文件
图片转为base64格式
这里把方法定义js文件中,根据需要自行调整
export const imageToBase64 = (img) => { // Vue.prototype.$imageToBase64 = img => { //定义全局 var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, img.width, img.height); var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase(); var dataURL = canvas.toDataURL("image/jpeg" + ext); return dataURL; };
base64格式转为File文件类型
export const base64ToFile = (urlData, fileName) => { let arr = urlData.split(','); let mime = arr[0].match(/:(.*?);/)[1]; let bytes = atob(arr[1]); // 解码base64 let n = bytes.length let ia = new Uint8Array(n); while (n--) { ia[n] = bytes.charCodeAt(n); } return new File([ia], fileName, { type: mime }); }
使用
- 引入
js
文件
import { imageToBase64, base64ToFile } from "@/api/commonApi"; created() { //调用方法 【url仅参考】 let url = 'https://testwq.jk.net/uploads/20200701/111fa8095def5bd296332f7eac01e400.jpg'; this.handleImgToBase64(url, (res) => { // 接收回调结果 console.log('回调结果', res); }); }, methods: { /** * url: 图片路径 * cb: callback */ handleImgToBase64(url, cb) { let that = this; var image = new Image(); image.crossOrigin = ''; image.src = url; image.onload = function () { let base64 = imageToBase64(image); //图片转base64 let file = base64ToFile(base64, 'file'); //base64转File // 根据自身需求调整【因个人项目逻辑不一样,这里使用回调函数】 cb && typeof cb == 'function' && cb(file); return file; } }, }
File文件转base64格式
通过
FileReader
对象读取存储文件内容。说明:
readAsDataURL
方法会读取指定的Blob
或File
对象。读取操作完成的时候,readyState
会变成已完成DONE
,并触发loadend
事件,同时result
属性将包含一个data:
URL格式的字符串(base64编码)以表示所读取文件的内容/** * file: file文件 */ base64(file) { return new Promise(function(resolve, reject) { let reader = new FileReader(); let imgResult = ""; reader.readAsDataURL(file); reader.onload = function() { imgResult = reader.result; }; reader.onerror = function(error) { reject(error); }; reader.onloadend = function() { resolve(imgResult); }; }); }
使用
<input type="file" @change="previewFile">
var file = e.target.files[0]; this.base64(file);
返回格式效果图
- 先把
-
C语言实现自制图片文件合成器
2021-10-06 10:39:02⛳️自制图片文件合成器 ♥️别着急,先看演示 自制图片文件合成器 1.操作步骤详解——小白跟着也能实现 2.直接上C语言代码 3.讲讲代码中出现的一些方法 wuhu——完工! ♥️别着急,先看演示 图片文件合成器 明明...👻前几天有个粉丝疯狂私信我问:“博主,博主,有没有什么办法能将我夜里看的小视频/爱情动作小说给藏起来,藏的越隐蔽越好,我怕我女朋友发现了揍我!”(听后我直乐呵,可见这是位名副其实的妻管严哦~)👻
😬一开始我是拒绝的,毕竟——我可是个正经人!但是他又是加我VX,又是关注我公众号(看看我主页左侧有二维码哦!)还说我发的博文他几乎都第一时间点赞,评论,收藏支持。瞬间就打动了我,于是我决定帮他一把(咳咳,我可不是因为这些才决定帮助他的,就单纯因为我爱粉丝)!😬
👇
👉🚔直接跳到末尾🚔👈 ——>领取专属粉丝福利💖
☝️认认真真看完本文,你就可以将你的男人之间才懂的“小秘密”藏的稳稳当当哦! ♥️别着急,先看演示
图片文件合成器
- 🎯🎯明明单纯只是张名为“正经图plus.jpg”的图片,但是当我把图片后缀名改为.zip后,这张图片就变成了一个压缩文件(里面可以放任何你想藏起来的文件!)【是不是很神奇,是不是很隐秘~】🎯🎯
- 👑👑这样就实现了那位粉丝的愿望——把他的小秘密藏进任何一张很正经很正经的图片里,夜里需要时,可以随时取出使用~👑👑
💎自制图片文件合成器
- 希望你会喜欢这个设计。我在下面分享了有关我如何进行此设计的详细教程,并且附带整个设计的完整代码。
- 你大可直接复制粘贴使用。但是——授之以鱼不如授之以渔,所以希望小伙伴们能跟着我的节奏来,一点点的学习整个设计的各个步骤,相信看到最后,小伙伴们都能做到不仅会用,还知道神奇操作实现的原理哦!
首先,直接上实操步骤,跟着做就OK了!
🎉1.操作步骤详解——小白跟着也能实现
-
首先,你要创建一个文件夹来放所有需要使用到的文件(本博主创建了个名为“测试”的文件夹【随便你放哪都可以~】);
-
然后,你需要找到一张用于显示的图片(注意:这张图片用于遮人耳目,找越正经的图越好~);
-
接下来,你就可以将你所有的资源(不管是图片,视频还是小说文本类型的文件都可,赶紧都拿过来~)都放进此文件夹里了!
-
将你所有的资源文件压缩成一个压缩包!
-
最关键,也是最激动人心的时刻——拿出本博主的神器——“神器.exe”,放进此文件夹中,双击运行,按照步骤依此输入图片名,资源压缩包名,合成后的文件名即可!
-
后话——估摸着会有很多小伙伴们看上我演示中显示的资源,我也不含糊,直接给你们(改后缀为.zip就可以发现新世界哦!)
(因为文件和图片都合并一起了,所以这个图有点大,直接放放不了,所以我上传到百度网盘里了->提取码:GHZ6 【真迫不得已,只能这样了~】)
点我下载此图片~
🎅2.直接上C语言代码
#include<stdio.h> #include<stdlib.h> int main() { FILE *f_pic,*f_file,*f_finish; char ch,pic_name[20],file_name[20],finish_name[20]; printf("请输入需要合成的图片和文件资源的名称:\n"); printf("图片(要加后缀名哦!):"); scanf("%s",pic_name); printf("文件(要加后缀名哦!):"); scanf("%s",file_name); printf("合成为:"); scanf("%s",finish_name); if(!(f_pic = fopen(pic_name,"rb"))) { printf("打开图片:%s失败!!!!\n",pic_name); return 0; } if(!(f_file = fopen(file_name,"rb"))) { printf("打开文件:%s失败!!!!\n",file_name); return 0; } if(!(f_finish = fopen(finish_name,"wb"))) { printf("打开合成文件:%s失败!!!!\n",finish_name); return 0; } while(!(feof(f_pic))) { ch = fgetc(f_pic); fputc(ch,f_finish); } fclose(f_pic); while(!(feof(f_file))) { ch = fgetc(f_file); fputc(ch,f_finish); } fclose(f_file); fclose(f_finish); system("pause"); }
🎃3.讲讲代码中出现的一些方法
- FILE *fp
- fp = fopen(文件名, 使用文件方式);
此函数用于打开文件。需要注意的是:在使用此函数打开一个文件时,如果出错,将返回一个空指针值NULL。所以可以用此信息判断是否成功打开文件。
- ch = fgetc(fp)
此函数从打开的文件fp中读取一个字符并送入ch中。
- fputc(ch, fp)
此函数将字符(ch的值)输出到fp所指向的文件中去。
- feof(fp)
此函数用来判断文件是否真的结束。如果结束,返回值为1;否则为0。
- fclose(文件指针)
此函数用于关闭文件。关闭成功返回值为0;否则返回EOF(-1)。
💝wuhu——完工!
被逮了也别说是我教的哈(我怕被打)! 可能某些小白没有c环境,也急需此方法,所以本博主直接将我的exe文件分享给大家(下载下面这张图,操作我相信你肯定会的~):
🌻🌻如果你从本文中学到了知识,喜欢它,那么我很荣幸。希望你可以将本文分享给你的小伙伴,点个赞&&收藏本文,并且,欢迎广大读者在评论区探讨技术,或是提出你们真诚的意见。🌻🌻
👇🏻可通过点击下面——>添加 私人VX号👇🏻 【请标明来自CSDN,会拉你进入技术交流群(群内涉及各个领域大佬级人物,任何问题都可讨论~)--->互相学习&&共同进步(非诚勿扰)】 -
Vue 前端显示文件流图片
2020-08-07 15:17:53通过前端vue发送用户图片,后端flask进行处理后返回以文件流形式的图片。 前端代码 <template> <v-container> // 注意一个vue文件中只能有一个lable,否则npm run serve 会卡死 <input class=...简介
通过前端vue发送用户图片,后端flask进行处理后返回以文件流形式的图片。
前端代码
<template> <v-container> // 注意一个vue文件中只能有一个lable,否则npm run serve 会卡死 <input class="file" name="file" type="file" accept="image/png,image/gif,image/jpeg" @change="update" /> <img style="width:180px" :src="img" > </v-container> </template>
<script> export default { data: () => ({ img : "" }), methods: { update(e){ let file = e.target.files[0]; let param = new FormData(); //创建form对象 param.append('file',file);//通过append向form对象添加数据 console.log(param.get('file')); //FormData私有类对象,访问不到,可以通过get判断值是否传进去 this.$axios.post('http://127.0.0.1:5000/upload',param,{headers:{'Content-Type':'application/x-www-form-urlencoded' }}, {responseType:"arraybuffer"}) // RESPONSE-TYPE 要定义成arraybuffer或blob .then(res=>{ this.img = 'data:;base64,' + res.data }) .catch(function (error) { console.log(error); }) } } } </script>
后端代码
from flask import Flask, render_template, request, jsonify,send_file, make_response from flask_cors import CORS import os import json from io import BytesIO from PIL import Image import base64 def return_img_stream(img_local_path): ''' 将图片文件转码成文件流,便于前端传输 ''' img_stream = '' with open(img_local_path, 'rb') as img_f: #'rb' 允许打开二进制的图片 img_stream = img_f.read() img_stream = base64.b64encode(img_stream) return img_stream @app.route('/upload',methods=["POST"]) def upload(): file_obj = request.files['file'] if file_obj is None: # 表示没有发送文件 return "未上传文件" file_path = os.path.join(app.config['UPLOAD_FOLDER'], "1.jpg") file_obj.save(file_path) resp = return_img_stream(file_path) return resp if __name__ == "__main__": app.run()
关键问题
- 图像的转码 base64
with open(img_local_path, 'rb') as img_f: #'rb' 允许打开二进制的图片 img_stream = img_f.read() img_stream = base64.b64encode(img_stream)
- vue接受后端过来的数据
res=>{ this.img = 'data:;base64,' + res.data }
- 前端显示图片
<img style="width:180px" :src="img" >
参考
-
上传图片文件遇到的文件损坏问题
2017-10-25 14:51:33上传图片文件遇到的文件损坏问题 以前我记录过上传文件的方法,那是相当于字符流的方式复制一份文件存在我想要存文件的地方,这次先搞图片上传的时候先前也准备使用这个方法的,但不幸的是,这种方式不适合图片! 原因在... -
.md文件中插入本地图片并显示图片预览
2022-04-13 17:15:10上传图片至gitee图片仓库二:修改图片网址,插入到md文件中并预览1.修改图片网址2.将修改好的网址插入md文件并预览总结 前言 本文详细介绍了在md文件中插入本地图片,并在md文件中显示图片预览的操作方法 一:获取... -
C++: 通过文件流读取图片文件
2020-10-22 19:44:44C++: 通过文件流读取图片文件 读取图片文件,读到内存后,再访问内存数据,另存为图片文件,亲测有效! 代码: #include <fstream> using namespace std; void main() { //一、打开jpg文件 // 1. ... -
PHP将GD库生成的图片输出到字节流及创建临时文件
2019-06-03 17:49:48先将图片保存到临时文件,然后从临时文件读取字节流并删除零时文件 创建临时文件 tempnam tempnam() 函数创建一个具有唯一文件名的临时文件,若成功,则该函数返回新的临时文件名,若失败,则返回false。 语法:... -
idea创建bpmn文件生成png图片
2019-08-11 14:32:27一、使用插件actiBPM生成bpmn文件 二、把bpmn文件后缀改为xml,在xml文件上右键 三、点击Export to file -
springmvc 上传图片文件和创建图片虚拟路径读取图片
2015-08-02 13:01:441 上传图片 1.1 需求 在修改商品页面,添加上传商品图片功能。 1.2 springmvc中对多部件类型解析 在 页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。 在... -
Spring Boot上传文件/图片&图片显示
2019-09-01 00:33:321. 本文章主要讲述如何在spring boot下上传文件,尤其是上传图片并显示,例如用户注册的时候上传了头像,此时头像会加载在注册页面上面,在Spring MVC的时候,这样实现还好实现,但是到了Spring Boot就并不是这样 ... -
使用 C# 修改文件创建时间(图片也可修改)
2020-06-23 12:56:37收到一个需求,希望修改指定文件的创建时间,并且文件数上千。所以希望通过程序来解决。用户的真实意图暂且不论,首先分析这个事情是否可行,立马搜索几篇文章一扫,得可行结论。既然可行那接下来就朝着实现的方向去... -
scrapy 下载及处理文件和图片
2022-03-11 11:06:37scrapy框架-下载及处理文件和图片 前言:scrapy提供下载item中包含的文件及图片, 提供了一个可重用的item pipelines, 这些pipeline有些共同的方法和结构(我们称之为media pipeline)。一般来说你会使用Files ... -
原生js文件上传,input如何实现文件(图片)上传与预览
2019-05-31 14:55:41首先文件上传得需要后台支持,我这里用的node写的后端服务,篇幅有限,这里就不贴后端代码了,有需要的留言联系 dom部分 由于form表单自动关联input文件上传按钮,故点击上传文件按钮时会自动往 action 路径提交... -
上传图片文件(一)
2019-05-16 17:29:45开发工具与关键技术:VS+图片上传 作者: 李伙 撰写时间: 2019年5月14日 在学习MVC过程中,我们学到手动录入题目信息,录入题目信息时,要判断题目到底是单选题、多选题还是判断题,单选题跟多选题差不多,也是有... -
java实现七牛云图片文件的上传
2020-02-20 14:46:11java实现七牛云图片文件的上传 七牛云:https://portal.qiniu.com/create#resource 首先需要去注册一个账号实现实名认证 之后打开七牛云的 我们需要先创建一个储存空间来给我们使用 这里的key也需要记录下来我们... -
文件与图片的上传下载 - 学习/实践
2019-04-23 23:31:211.涉及到文件与图片在网络中的传输 1.QQ发送图片的原理是什么 //https://zhidao.baidu.com/question/23196825.html QQ发送图片的原理同互联网传播方式一样,为二进制。 互联网的数据传播都是将数据... -
python批量新建文件、批量保存图片、批量创建文件夹
2020-11-19 17:34:52python批量新建文件、批量保存图片、批量创建文件夹 新建文件: ## 假设我要新建10个txt文件 for i in range(10): ##这里的./指代的是当前文件夹, %i表示文件的名称 f = open('./%s'%i + '.txt',"w") f.write... -
IDEA2017 创建xml文件教程-图片
2018-01-07 16:15:32IDEA2017 创建xml文件教程-图片 一直以来用的开发工具都是eclipse或者myeclipse,前短时间朋友向我推荐IDEA,用了一段时间之后,IDEA代码提示功能真的是省时省力。 向我这样的新手来说,刚摸熟悉eclipse就换开发... -
【SpringBoot学习】5、SpringBoot 实现文件上传,图片上传并显示功能
2019-09-03 23:04:20毕竟只是一个新手,解决这种复杂点的问题(相对而言),还是需要花费大量时间的,这篇文章花了两天的时间才实现的功能,现在就记录一下使用springboot怎么实现文件上传下载的。 我这里使用的是 springboot 2.0.3,... -
手把手教你pyqt中.qrc图片文件的编写和使用
2020-04-26 01:00:55pyqt图片文件.qrc的编写 0x00说明: 可以通过qrc文件将我们要用的图片转化成py代码, 然后引入到需要用到的地方。 这将有利于将程序打包成exe后图片的正常显示。 0x01 编写步骤 在项目文件夹下加入需要用到的图片 ... -
Java中如何根据图片文件创建Image对象,且将Image对象保存为文件形式
2016-11-24 21:23:061.根据一个文件路径创建Image对象 Image image = ImageIO.read(new File(filepath)); 2.将Image对象保存为文件形式 BufferedImage image = ImageIO.read(new File(filepath));//要想保存这个对象的话你要把image... -
图片上传文件流格式转换 File文件流转为MultipartFile流详解
2019-03-15 16:19:53通常从界面上传的文件,后台接口都用MultipartFile格式的文件流接收,如果要直接对物理磁盘目录里的文件进行操作,则只能实用File流进行操作,有时由于一些定制化的需求,需要对File流和MultipartFile流转换,笔者... -
php如何将base64数据流文件转换为图片文件?
2018-12-19 12:46:13在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示... ***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一长串就是具体的文件信息。 data:image/jpg;base64则是指的文件头。... -
Android 11 存取文件或保存取出图片到目录
2022-02-22 16:51:51今天遇到个问题,在安卓10以下保存图片到目录有效,在安卓11上就不行。 有问题的代码是这样的 String path = Environment.getExternalStorageDirectory()+"/DirName/"+"123.jpg"; 上面这句代码获取的是文件的根... -
Jeesite4本地及服务器上传文件、图片详解
2019-02-12 10:38:46大家过年好,你们的老朋友小Q又回来了,最近一...这不,在上传文件与上传图片这直接给卡死了。百度google了好久也没能找到解决办法,经过咨询开发者ThinkGem先生,总算找到了解决方案。所以呢,为了让以后使用jeesit... -
创建JSON文件
2019-10-10 09:32:31一、创建cJSON文件所需要的一些接口 创建一个值类型的数据 extern cJSON *cJSON_CreateNumber(double num); extern cJSON *cJSON_CreateString(const char *string); extern cJSON *cJSON_CreateArray(void); 创建... -
使用JSZip实现压缩文件与图片
2020-08-21 18:34:12JSZip是一个用于创建、读取和编辑.zip文件的javascript库,有一个可爱而简单的API。JSZip支持Nodejs和浏览器端的安装使用。具体方法如下: npm install jszip npm install file-saver 浏览器端解压zip文件 ... -
Java读取图片文件
2017-07-18 20:54:17需求:读取图片输入流,获取图片并存储在桌面上 代码如下: import javax.imageio.ImageIO; import javax.imageio.stream.ImageOutputStream; import java.awt.*; import java.awt.image.BufferedImage; import ... -
pdfbox 提取 pdf文件中的图片
2010-08-14 16:54:032.可以从文本文件创建一个PDF文档。 3.加密/解密PDF文档。 4.向已有PDF文档中追加内容。 5.可以从PDF文档生成一张图片。 6.可以与Jakarta Lucene搜索引擎的整合。 这个小程序,实现了,图片提取,文档解密的基本...