精华内容
下载资源
问答
  • 图片的年份历程PPT素材下载。
  • 优化png图片历程

    2016-04-12 08:54:00
    一、使用yslow一个tool ...由于压缩的图片大小还是太大了,我认为还是自己来更“人性化”一点。 于是,还有一种方法出现了! 二、使用Photoshop的色调分离方法 以上两种方法是之前总结得到的。原来总结做...

    一、使用yslow一个tool 



    找到一个叫做smush的工具,点击就可以进入工具的页面。


    然后你就能够压缩,下载压缩后的图片。
    可是终于我还是没有选择这个方案。由于压缩的图片大小还是太大了,我认为还是自己来更“人性化”一点。

    于是,还有一种方法出现了!


    二、使用Photoshop的色调分离方法

    以上两种方法是之前总结得到的。原来总结做的笔记能够參考:http://www.w3cfuns.com/blog-5436161-5399004.html


    三、使用腾讯智图网上压缩图片的方法

    智图地址:http://zhitu.tencent.com/

    通过把图片拖入到对应区域中,就可以为你的图片适配优化方案。

    用法简答粗暴,挺好用的,如今项目上都会用这个工具优化一下png图片。

    假设这个工具还是不能满足的话,我会再用Photoshop色调分离的办法再压缩下。


    四、iSparta工具

    详细的内容能够參考之前写的博客,是转载的:

    http://blog.csdn.net/wuweitiandian/article/details/41676333


    注:第三和第四种方法,都是在腾讯isux上看到的,这些压缩的方法都挺好的,灵活选择,此方法不通还有一种方法则通。在保证图片质量的情况下,尽量压缩图片的大小。优化网页的载入速度。


    转载于:https://www.cnblogs.com/blfshiye/p/5381268.html

    展开全文
  • 这几天用MXNet写人脸关键点检测代码,中间忘了将图片在送入网络之前,减去图片的均值,从有关函数的名称来看,这算是一种归一化操作。总之,缺少这个操作的结果,就是loss一直在抖,丝毫没有下降或上升的趋势。所以...

    问题的产生

    这几天用MXNet写人脸关键点检测代码,中间忘了将图片在送入网络之前,减去图片的均值,从有关函数的名称来看,这算是一种归一化操作。总之,缺少这个操作的结果,就是loss一直在抖,丝毫没有下降或上升的趋势。所以今天从这个问题入手,对这问题相关进行掌握。

    问题的研究

    看了一些深度学习框架的例程,处理原图为黑白比如mnist数据集,不需要进行图片均值减去处理,而三通道彩图,一般都需要。

    1、那为什么需要这种减去图片均值的预处理方式呢?
    2、什么情况下需要采用这种预处理方式

    从主成分分析着手

    可以学习一下主成分分析

    这里摘抄一部分主要内容:

    对图像数据应用PCA算法

    为使PCA算法能有效工作,通常我们希望所有的特征 都有相似的取值范围(并且均值接近于0)。如果你曾在其它应用中使用过PCA算法,你可能知道有必要单独对每个特征做预处理,即通过估算每个特征 的均值和方差,而后将其取值范围规整化为零均值和单位方差。但是,对于大部分图像类型,我们却不需要进行这样的预处理。假定我们将在自然图像上训练算法,此时特征 代表的是像素 的值。所谓“自然图像”,不严格的说,是指人或动物在他们一生中所见的那种图像。
    注:通常我们选取含草木等内容的户外场景图片,然后从中随机截取小图像块(如16x16像素)来训练算法。在实践中我们发现,大多数特征学习算法对训练图片的确切类型并不敏感,所以大多数用普通照相机拍摄的图片,只要不是特别的模糊或带有非常奇怪的人工痕迹,都可以使用。
    在自然图像上进行训练时,对每一个像素单独估计均值和方差意义不大,因为(理论上)图像任一部分的统计性质都应该和其它部分相同,图像的这种特性被称作平稳性(stationarity)。
    具体而言,为使PCA算法正常工作,我们通常需要满足以下要求:(1)特征的均值大致为0;(2)不同特征的方差值彼此相似。对于自然图片,即使不进行方差归一化操作,条件(2)也自然满足,故而我们不再进行任何方差归一化操作(对音频数据,如声谱,或文本数据,如词袋向量,我们通常也不进行方差归一化)。实际上,PCA算法对输入数据具有缩放不变性,无论输入数据的值被如何放大(或缩小),返回的特征向量都不改变。更正式的说:如果将每个特征向量 都乘以某个正数(即所有特征量被放大或缩小相同的倍数),PCA的输出特征向量都将不会发生变化。
    既然我们不做方差归一化,唯一还需进行的规整化操作就是均值规整化,其目的是保证所有特征的均值都在0附近。根据应用,在大多数情况下,我们并不关注所输入图像的整体明亮程度。比如在对象识别任务中,图像的整体明亮程度并不会影响图像中存在的是什么物体。更为正式地说,我们对图像块的平均亮度值不感兴趣,所以可以减去这个值来进行均值规整化。

    从反向传播梯度着手

    了解到基本在deep learning中只要你是使用gradient descent来训练模型的话都要在数据预处理步骤进行数据归一化。当然这也是有一定原因的。
    根据公式

    Ew11(2)=x1δ1(2)

    如果输入层 x 很大,在反向传播时候传递到输入层的梯度就会变得很大。梯度大,学习率就得非常小,否则会越过最优。在这种情况下,学习率的选择需要参考输入层数值大小,而直接将数据归一化操作,能很方便的选择学习率。而且受 xw 的影响,各个梯度的数量级不相同,因此,它们需要的学习率数量级也就不相同。对 w1 适合的学习率,可能相对于 w2 来说会太小,如果仍使用适合 w1 的学习率,会导致在 w2 方向上走的非常慢,会消耗非常多的时间,而使用适合 w2 的学习率,对 w1 来说又太大,搜索不到适合 w1 的解。

    后续研究

    之后再这方面碰到问题的话,会继续深究,加以补充,各位有不同的理解,也可底下评论讨论一下,共同学习。

    展开全文
  • 由于apicloud内置js渲染引擎,所以写大部分的js是无所顾忌的,但最近在写图片上传功能时,本以为还可以正常的思路,先监听input type为 file的onchang,进而获取到file,奈何在提交时一直不能拿到file文件,apicloud...

    最近一直在用apicloud开发app,虽然目前来说还不知道该框架的优势在哪里,但已经被下达命令就好好把这个框架学习好

    图片上传

    由于apicloud内置js渲染引擎,所以写大部分的js是无所顾忌的,但最近在写图片上传功能时,本以为还可以正常的思路,先监听input type为 file的onchang,进而获取到file,奈何在提交时一直不能拿到file文件,apicloud是使用它自己的方法去进行请求的,data参数中有body,files,values跟stream,香叶不用想自然是用file进行传值,结果仔细看其api,发现要提交文件并不是我们所拿到的图片的二进制文件,而是一个存储图片的地址字符串,于是就去找能拿到图片地址的方法即api.getPicture,然后把拿到的存储地址直接上传就可以。
    在这里插入图片描述
    在这里插入图片描述
    最后值得注意的是getPicture方法会把拿到的图片压缩50%,如果是后端已经采用了压缩方法的话前端就需要手动把quality属性手动设为100,
    图片获取与上传更多内容: https://blog.csdn.net/qq_34484499/article/details/98960935

    展开全文
  • 图片压缩上传 不管是前端还是后端的开发人员,基本上都会使用到过图片上传,为了衡量网络传输性能,我们会对上传的图片进行压缩。 前端进行压缩是为了用户使用体验更优和网络传输压力更小,后端进行压缩是为了图片...

    图片压缩上传


    不管是前端还是后端的开发人员,基本上都会使用到过图片上传,为了衡量网络传输性能,我们会对上传的图片进行压缩。

    前端进行压缩是为了用户使用体验更优和网络传输压力更小,后端进行压缩是为了图片存储更优。

    这里我是用vant.js的uploader组件,进行图片压缩和上传。

    先描述一下我的需求: 是表单页面的数据一次提交给后端(包括表单数据和图片数据)

    遇到的问题: 点击提交按钮无反应,上传图片的预览显示不出上传图片的缩略图。

    解决思路:

    (1)首先提交按钮无反应,原因是表单数据和图片数据一次性提供给接口的时候,前后端通信时间长,用户可能没耐心以为未点击成功,出现重复点击情况,调起多起数据访问请求。

    (2)上传图片的缩略图不显示问题可能是由于图片未进行压缩,相机拍摄出的照片像素过大,手机网络信号差及内存小等综合性原因。

    解决方法:

    (1)给提交按钮加一个进度条,方便用户看到进度条提示,不进行重复点击操作,另外给按钮添加限制,一个交互过程未结束的情况下不重复发起交互通信。

    // 进度条这里暂用vant.js中的
    import Vue from 'vue';
    import { Progress } from 'vant';
    
    Vue.use(Progress);
    // 可自行设计进度条样式
    <van-progress :percentage="50" />
    

    (2)图片过大,前后端传输过程中所需时间长,成本高,效率低,在网速慢的情况下更容易出现问题。所以在前后端通信交互前,前端进行本地压缩。

    这里可以使用beforeRead和afterRead函数选择压缩,beforeRead是选择文件是压缩并把文件数据存在页面上,afterRead是选择文件上传在页面后再进行图片压缩。

    afterRead方式可能存在图片过大手机端出现缩略图不显示的问题,建议使用beforeRead方式,缩略图显示正常,减少性能损耗。

    // 这里限制只上传一张展品,可设置多张,加下multiple,max-count可以设置多
    <van-uploader v-model="fileList" :max-count="1" :after-read="afterRead" :before-read="beforeRead" />
    
    import Vue from 'vue';
    import { Uploader } from 'vant';
    
    Vue.use(Uploader);
    
    beforeRead(file) { 
    	// 上传之前检测图片类似返回true和false会影响到onRead函数
    	let _this = this;
    	let regex = /(.jpg|.jpeg|.png|.bmp)$/
    	if (!regex.test(file.type)) {
    		Toast('图片格式不支持上传')
            return false
       	} else {
       		//自己定义的文件大小,超过多少M就开始压缩(现在是1M)
            let maxSize = 1 * 1024 * 1024; 
            let fileObj = file; // 当前的图片
            
            if(file.size > maxSize){
            	//实例化文件读取对象
            	var reader = new FileReader(); 
            	//将文件读取为 DataURL,也就是base64编码
            	reader.readAsDataURL(file); 
            	//文件读取成功完成时触发
            	reader.onload = function(ev) { 
            		//获得文件读取成功后的DataURL,也就是base64编码
               	 	var dataURL = ev.target.result; 
                	var files = {content:dataURL,file:fileObj}
                	_this.imgcompress(fileObj, files);
            	}
            }
        }
    },
    
    afterRead(file) {
       	console.log(file)
    },
    
    imgcompress(file, files) {
      	const img = document.createElement("img");
      	// 读取文件资源实例
    	const reader = new FileReader(); 
    	//读取图片资源
        reader.readAsDataURL(file); 
        reader.onload = (e) => {
    		//读取成功
            let _this = this;
            img.src = e.target.result;
            img.onload = function () {
            //上传的图片的宽高
    	    const { width: originWidth, height: originHeight } = img; 
    	    //设置一个canvas 的最大宽高
            const maxWidth = 1024, maxHight = 1024;
            if (originWidth > maxWidth || originHeight > maxHight) {
          		//计算出图片的缩放比例
                if (originWidth > originHeight) {
                	//宽 大于 高
                	const Proportion = Math.ceil(originWidth / maxWidth);
               		//目标的宽度
                	let targetWidht = parseInt(originWidth / Proportion); 
                	//目标的高度
                	let targetHeight = parseInt(originHeight / Proportion); 
    				_this.createCanvasCompress(targetWidht, targetHeight, img, files, 1);
          		} else {
          			//高大于宽
           			const Proportion = Math.ceil(originHeight / maxHight); 
           			//目标的宽度
                	let targetWidht = parseInt(originWidth / Proportion); 
                	//目标的高度
                	let targetHeight = parseInt(originHeight / Proportion); 
                	let bold = _this.createCanvasCompress(targetWidht, targetHeight, img, files, 1);
                }
        	} else {
                let quality = 0.8;
                _this.createCanvasCompress(originWidth, originHeight, img, files, quality);
        	}
       	}
    	};
    },
    
    createCanvasCompress(targetWidth, targetHeight, img, files, quality) {
       	let _this = this;
       	return new Promise((resolve, reject) => {
          	const canvas = document.createElement("canvas");
            const context = canvas.getContext("2d");
            // 设置宽高度为等同于要压缩图片的尺寸
            canvas.width = targetWidth;
            canvas.height = targetHeight;
            context.clearRect(0, 0, targetWidth, targetHeight);
            //将img绘制到画布上
            console.log(targetWidth, targetHeight);
            context.drawImage(img, 0, 0, targetWidth, targetHeight);
            files.content = canvas.toDataURL(files.file.type, quality); // 0.92为默认压缩质量
            const newFile = this.dataURLtoFile(files.content, files.file.name);
            let obj = {content: files.content, file: newFile}
            let commonImg = []
            commonImg.push(obj)
            this.fileList = commonImg;
            return true
          });
        },
    
    

    (3) 这里有几个图片格式转换的方法如下:

    1.文件转化为base64格式

    // 文件转化为base64格式
    filetoBase(file) {
    	//实例化文件读取对象
     	var reader = new FileReader(); 
     	//将文件读取为 DataURL,也就是base64编码
    	reader.readAsDataURL(file); 
    	//文件读取成功完成时触发
     	reader.onload = function (ev) { 
     		//获得文件读取成功后的DataURL,也就是base64编码
        	var dataURL = ev.target.result;
            console.log(dataURL);
            return dataURL
          }
        },
    

    2.将base64转换为file文件

    // 将base64转换为file文件
    dataURLtoFile (dataurl, filename) { 
      	let arr = dataurl.split(',')
      	let mime = arr[0].match(/:(.*?);/)[1]
    	let bstr = atob(arr[1])
     	let n = bstr.length
    	let u8arr = new Uint8Array(n)
    	while (n--) {
       		u8arr[n] = bstr.charCodeAt(n)
      	}
      	return new File([u8arr], filename, {type: mime})
    },
    

    3.网络链接图片转base64

    // 网络链接图片转base64
    imgToBase64(url,cb){
     	var canvas = document.createElement('canvas'),
    	ctx = canvas.getContext('2d'),
        img = new Image;     
        img.crossOrigin = 'Anonymous';
        img.onload = function () {
          	canvas.height = img.height;
            canvas.width = img.width;
            ctx.drawImage(img, 0, 0);
            var dataURL = canvas.toDataURL('image/png');
            cb && cb(dataURL);
            canvas = null;
      	};
        img.src = url;
    },
    

    4.base64转文件格式

    // base64转文件格式
    base64toFile(base, filename){
    	var arr = base.split(',');
      	var mime = arr[0].match(/:(.*?);/)[1];
     	var bstr = atob(arr[1]);
    	var n = bstr.length;
      	var u8arr = new Uint8Array(n);
      	while (n--) {
        	u8arr[n] = bstr.charCodeAt(n);
     	}
      	//转换成file对象
       	return new File([u8arr], filename, { type: mime });
    }
    
    展开全文
  • 下面就来说下我的坑路历程吧~ 1.一开始看阿里云文档,有两种模式,一种免密登录,一种是需要后台加入,解密算法和签名。想在前端直接解决(由于本项目一第一版考虑欠缺,后台解密需要的一些参数暂时无法实现)...
  • 寻找百度图片搜索接口历程--one

    千次阅读 2016-03-11 19:45:59
    最近自己在做个网站,主要是想展示一些车辆的信息,车辆的文字信息抓的差不多了,但是车辆的图片信息还差好多,尤其是好看又清晰一些的图片,然后我就想到用百度的图片搜索来为自己抓取一些图片! 首先说下我想的...
  • 紧接上一章我们说的显示文字,这一节我们在探讨下怎样在SDL_Surface上显示一张图片 废话就不多说了...直接切入正题..在这个步骤中我们要用到的基本函数有 SDL_Surface * SDLCALL IMG_Load(const char *file); 函数...
  • 深圳的发展历程[图片]

    千次阅读 2007-08-05 15:57:00
    <!--google_ad_client = "pub-4132059357280596";google_ad_width = 336;google_ad_height = 280;google_ad_format = "336x280_as";google_ad_type = "text_image";//2007-07-27: rightgoogle_ad_ch
  • OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。
  • 硅谷多家技术公司顾问Philippe Nicolas贴出了一张有趣的对象存储发展历程图片,利用数据表细化出内容寻址存储(CAS)即对象存储的发展历程。 该图表汇总了多家企业不同产品的起源,X轴代表时间线,Y轴则为企业,项目和...
  • 以前自己都不知道怎么去显示服务器端的图片,还好在apkbus论坛上找到一个特别简单的例子。虽然一天天忙忙碌碌,但是自己内心其实有一种想逃的心里,说不定哪天就会冒出来。 1、首先服务器端图片 这里的...
  • 1.标签是来存放图片的,它有一个src属性,这是来获得图片路径的 路径等同于相对路径跟绝对路径,我这里使用的是绝对路径,不懂的同学可以查一下子. alt属性为图片的标题WIDTH为图片的宽度HEIGHT为图片的高度. 2....
  • 因为要使用上传图片功能,附加图片的描述信息, 而传统的<s: file/>由于一些限制在这个小模块中无法使用, 于是搜到了使用ajaxfileupload.js插件进行上传的方法,在使用过程中,jsp,js,struts2  因为自己不...
  • 原创文章,转载请注明出处:http://www.jerrycoding.com/article/site_building_10上篇已经成功实现了...本文介绍下如何使用CKEditor富文本编辑器上传带格式的文本以及图片代码段等。1、安装django-ckeditorroot@j...
  • 原创文章,转载请注明出处:http://www.jerrycoding.com/article/site_building_10上篇已经成功实现了...本文介绍下如何使用CKEditor富文本编辑器上传带格式的文本以及图片代码段等。1、安装django-ckeditorroot@j...
  • WinCE中解决“图片采集及压缩”问题的开发历程 作者:一点一滴的Beer http://beer.cnblogs.com/ 主要对解决问题的过程和方法进行介绍。 已有条件: 设备:WinCE工控板一个,LCD液晶屏一个,摄像头一个,...
  • 2017年3月16日 7:52AM在使用AS导入PNG图片的时候会有一定的几率导致PNG图片构建失败原因是由于新版的AS会检测PNG格式图片的正误问题会导致一系列的报错,但这样的报错是对工程效果没有影响的,但是会阻止你继续构建...
  • 在wince的开发过程中,经常要涉及到GUI等开发,其强大的功能依赖于微软各种动态库和组件的支持,这里主要介绍wince下各种图片的显示方法,开发环境是EVC4.0下的wince5.0。 在一些多媒体项目中,图片显示是必不可少...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,001
精华内容 400
关键字:

历程图片