精华内容
下载资源
问答
  • 前端压缩图片

    2016-06-27 09:16:02
    前端压缩图片
  • peasUpload 前端压缩图片上传,能进行前端压缩处理,修正拍照上传方向不正确的功能。
  • 前端压缩工具

    千次阅读 2017-10-07 22:36:56
    前端压缩打包工具

    介绍一下webpack和gulp以及项目中的具体使用

    • 现今的很多网页其实可以看做是功能丰富的应用,它们拥有复杂的javascript代码和一大堆依赖包,为了简化开发的复杂度,有很多实践方法
    • 模块化:将复杂的程序细化为小的文件
    • 类似于typescript这种在js基础上拓展的开发语言,可以简化我们的开发,并且之后可以用bable等工具将其转化成为js即浏览器认识的语言
    • Sass,less等css预处理器
    • webpack是模块打包机,它做的事情是分析你的项目结构,找到js模块以及其他的一些浏览器不能直接运行的语言,并将其打包为合适的格式供浏览器使用

    Babel

    • 编译js的平台,可以使用下一代的es6和es7
    • 使用基于js拓展的语言,如 react的JSX

    模块组织的几种方法

    • 通过书写在不同文件中,使用script标签进行加载
    • common.js node.js使用的就是这种方式
    • amd进行加载 require.js使用这种模式
    • es6模块

    webpack

    webpack的特点

    • 丰富的插件方便进行工作
    • 大量的加载器,包括加载各种静态资源
    • 代码分割,提供按需加载的能力
    • 发布工具

    webpack的优势

    • webpack是以commonjs的形式来书写脚本 但对amd和cmd也支持全面,方便旧项目进行代码迁移
    • 能被模块化的不仅仅是js了
    • 开发便捷 能替代部分grunt和gulp的工作 比如打包 压缩 图片转base64
    • 扩展性强 插件机制完善

    webpack的属性值

    • entry 入口文件
    • output:定义构建后的输出文件
    • module:loaders加载各种资源
    • reslove resolve属性中的extensions数组用于配置程序中可以自行补全哪些文件后缀
    • plugin 提供了丰富的组件来满足不同的需求
    • externals 当我们想在项目中require一些其他的类库或者api 而又不想让这些类库的源码被构建到运行时文件中
    • context

    Grunt

    配置gruntfile.js

    module.exports = function () {
        grunt.initConfig({
            pkg: grunt.file.readJSON('package.json');
        });
        grunt.registerTask('default', []);
    }

    grunt插件介绍

    • contrib-jshint js语法错误勘察
    • contrib-watch 实时监控文件变化 调用相应的任务重新执行
    • contrib-clean
    • contrib-copy
    • contrib-concat
    • karma 前端自动化测试化工具

    uglify 插件

    uglify: {
        options: {
            stripBanner: true,
            banner: 
        },
        build: {
            src:
            dest
        }
    }
    
    在initConfig之后 
    grunt.loadNpmTasks('grunt-contrib-ugify');
    grunt.registerTask('default','ugify');
    • banner: 即在生成的压缩文件第一行加一句话说明,pkg可以获得package.json的内容
    • build: 配置了源文件和压缩文件,即规定了要压缩谁 压缩之后生成谁

    jshint

    jshint: {
        build: ['Gruntfile.js', 'src/*.js'],
        options: {
            jshintrc: '.jshintrc'
        }
    }

    使用watch插件

    watch: {
        build: {
            files: ['src/*.js', 'src/*.css'],
            tasks: ['jshint', 'uglify'],
            options: {spawn: false}
        }
    }

    gulp

    gulpfile.js

    • gulp的配置文件
    var gulp = require('gulp')
    var less = require('gulp-less')
    gulp.task('testLess', function () {
        gulp.src=('src/less/index.less')
        .pip(less())
        .pip(gulp.dest('src/css'))
    });
    //定义默认任务,并让gulp监视文件变化自动执行
    gulp.task('default', ['watch'], function () {
        gulp.watch('sass/*.scss',['sass']);
    });
    

    gulp常用插件

    • js压缩
    var gulp = require('gulp');
    var rename = require('gulp-rename');
    var uglify = require('gulp-uglify');
    gulp.task('rename', function () {
        gulp.src('src/**/*.js')
        .pipe(uglify())
        .pipe(rename('idnex.min.js'))
        .pipe(gulp.dest('build/js');
    });
    gulp.task('default', ['rename']);
    • html压缩
    var minifyHtml = require('gulp-minify-html');
    gulp.task('minify-html', function () {
        gulp.src('src/**/*.html')//要压缩的html文件
        .pipe(minifyHtml())//压缩
        .pipe(gulp.dest('build'))
    });
    • js文件合并
    var concat = require('gulp-concat');
    gulp.task('concat', function () {
        gulp.src('src/**/*.js')//要合并的文件
        .pipe(concat('index.js'))//合并匹配到的js文件并命名为index.js
        .pipe(gulp.dest('build/js'))
    });
    • gulp-less
    var gulp = require('gulp'),
    
    var less= require("gulp-less");
    
    gulp.task('compile-less',function() {
    
        gulp.src('src/less/*.less')
    
        .pipe(less())
    
        .pipe(gulp.dest('build/css'));
    
    });
    gulp.task('default',['compile-less']);
    
    展开全文
  • index.js 前端压缩资源

    2016-11-03 10:34:31
    帮助实现前端压缩图片
  • PHP实现前端压缩图片上传
  • 本文实例为大家分享了js实现纯前端压缩图片的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <meta name=viewport content=width=...
  • 主要介绍了基于JS实现前端压缩上传图片的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
  • zipJS 前端压缩使用

    万次阅读 2019-04-04 16:28:50
    JSzip库说明 前言 前端在处理文件时,...主要功能:前端压缩、解压缩、编辑zip文件。 这个库的官网:https://stuk.github.io/jszip/ 安装 浏览器环境 代码下载链接 http://github.com/Stuk/jszip/zipball/maste...

    前端在处理文件时,对于大文件或者多个文件上传、下载、编辑,直接使用原文件不方便,最近使用一个可以前端中处理 zip 文件的库,JSzip,主要功能:前端中压缩、解压缩、编辑zip文件。
    在这里插入图片描述

    在 nodeJS 中,可以使用 JSZip 压缩本地文件。

    这个库的官网:https://stuk.github.io/jszip/

    安装

    浏览器环境

    代码下载链接 http://github.com/Stuk/jszip/zipball/master 下载后直接插入到HTML的 script标签中

    NPM 环境

    使用 npm 安装依赖(如果没有npm,请先安装 nodeJS)

    npm install jszip --save
    
    // 使用 require 引入 jszip
    var JSZip = require("jszip");
    
    // 引入另一个 file-saver 库,用来把压缩好的文件保存到本地
    var saveAs = require('file-saver');
    
    // 新建一个zip压缩对象实例
    var zip = new JSZip();
    
    // 压缩一个文件(文件内容可以上传,使用fs模块,或者直接使用字符串)
    zip.file("Hello.txt", "Hello World\n");
    
    // 压缩一个文件夹,内部包含一个图片(可以压缩多个文件和文件夹)
    zip.folder("images").file("smile.gif", imgData, {base64: true});
    
    // 异步生成压缩文件
    zip.generateAsync({type:"blob"}).then(function(content) {
      // 保存到本地
      saveAs(content, "example.zip");
    });
    

    这样就可以将浏览器中的文本(文件)保存成 example.zip 格式存储到本地了。

    下面是全部的代码

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>Document</title>
      </head>
      <body>
        <p>Works on firefox, chrome , opera &gt;= 15 and IE &gt;= 10 (but NOT in compatibility view).</p>
        <button id="zip" class="btn btn-primary">click to zip</button>
        <button id="unzip" class="btn btn-primary">click to unzip</button>
        <div id="result_block" class="hidden">
          <h3>Content :</h3>
          <div id="result"></div>
          <div id="fileContent"></div>
        </div>
      </body>
      <script src="./jquery.js"></script>
      <script src="./jszip.js" ></script>
      <script src="./FileSaver.js"></script>
      <!-- 导入这个插件,可以不用使用下面的 download 函数 -->
      <script type="text/javascript">
    
        // 创建一个zip 对象,将文件名和内容读到文件中
        var zip = new JSZip();
        zip.file("readme.md", "#### hello\nMichael 测试文件"); // 直接把一个文件放在根目录下面
        zip.folder("media").file("image1.jpg", "#### hello\nMichael 测试文件").file("image2.png", "#### hello\nMichael 测试文件"); // 在根目录下放一个文件夹 media,内部包含两个模拟图片文件
        zip.folder("template").file("index.html", "<html><h3>Hello</h3></html>"); // 在根目录下放一个文件夹 template 内部是一个HTML文件。
        window.result = '';
    
        // 将文本压缩zip 并下载
        $("#zip").on("click", function () {
            // type: "string"
            zip.generateAsync({type:"blob"}).then(function (blob) {
            // 1) generate the zip file
                // console.log(blob);
                window.result = blob; // 绑定到全局组件上,使用另一个按钮下载
                // // 2) trigger the download
                saveAs(blob, "hello.zip");
                
            }, function (err) {
                $("#blob").text(err);
            });
        });
    
    
        // 将 zip 文件解压缩成内容读取。
        $("#unzip").on("click", function () {
          JSZip.loadAsync(window.result)
          // 1) read the Blob
            .then(function(zip) {
                console.log(zip);
                zip.forEach(function (relativePath, zipEntry) {
                // 2) print entries
                    $("#fileContent").append($("<li>", {
                        text : zipEntry.name
                    }));
                });
            }, function (e) {
                $('#result').append($("<div>", {
                    "class" : "alert alert-danger",
                    text : "Error reading " + window.result.name + ": " + e.message
                }));
            });
        });
    
        // 模拟点击,下载文件
        // fake_click(save_link);
        function fake_click(obj) {
          var ev = document.createEvent("MouseEvents");
          ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
          obj.dispatchEvent(ev);
        }
    
        // 下载文件
        // download("save.txt","hello world");
        function download(name, data) {
          var urlObject = window.URL || window.webkitURL || window;
          var downloadData = new Blob([data]);
          var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
          save_link.href = urlObject.createObjectURL(downloadData);
          save_link.download = name;
          fake_click(save_link);
        }
      </script>
    </html>
    

    注:浏览器环境下,需要设置合适的第三方库 JS 路径,根据本地实际路径设置。

    <script src="./jquery.js"></script>
    <script src="./jszip.js" ></script>
    <script src="./FileSaver.js"></script>
    

    存在的问题:

    实际使用中,如果压缩文件很大(例如2G)可能出现缓存区错误(感谢 July 冲鸭的反馈),反馈信息,目前官方没有给出明确的解决方案(官方问题),可以使用 zipjs 压缩普通大小的文件(几十MB没问题)。

    展开全文
  • 前端压缩图片以及php后端上传

    千次阅读 2016-11-03 10:12:32
    后端压缩已经越来越不能满足用户的需求,尤其在前端日益发展的今天,前端压缩势在必行。以前由于一直没有找到合适的前端压缩的方法,一次放弃,一次次绕行,最终没有绕过这道坎。接下来我们说一下前端压缩还有上传 ...

     后端压缩已经越来越不能满足用户的需求,尤其在前端日益发展的今天,前端压缩势在必行。以前由于一直没有找到合适的前端压缩的方法,一次放弃,一次次绕行,最终没有绕过这道坎。接下来我们说一下前端压缩还有上传

           1.引入js,index.js已上传我的资源。

            2.在页面中如何调用index.js,来实现前端压缩的效果。

    上代码:

      html:

     <form method="post" action="{:U('Home/RegisterInfo/uploadzippic')}">                  
    		<input type="hidden" value="{$applicantid}" name="applicantid" />
    		<div class="photolist" >
    			<div class="itemphoteo">
    				<img src="__TMPL__/img/num.jpg" id="list2_1"/>
    				<input type="file" class="filebtn" id="file_Id1" capture="camera" accept="image/*" name="fileimg[]" οnchange="previewImage(this,'list2_1');piczip(this.id,event)"/>
    			<input type="text"  id="1" name="fileimg3_1"/>
    			
    			</div>
    			<div class="itemphoteo">
    				<img src="__TMPL__/img/num.jpg" id="list2_2"/>
    				<input type="file" class="filebtn" id="file_Id2" capture="camera" accept="image/*" name="fileimg[]" οnchange="previewImage(this,'list2_2');piczip(this.id,event)"/>
    			<input type="text"  id="2" name="fileimg3_2"/>
    			</div>
    			<div class="itemphoteo">
    				<img src="__TMPL__/img/num.jpg" id="list2_3"/>
    				<input type="file" class="filebtn" id="file_Id3" capture="camera" accept="image/*" name="fileimg[]" οnchange="previewImage(this,'list2_3');piczip(this.id,event)"/>
    			<input type="text"  id="3" name="fileimg3_3"/>
    			</div>
    			<div class="itemphoteo">
    				<img src="__TMPL__/img/num.jpg" id="list2_4"/>
    				<input type="file" class="filebtn" id="file_Id4" capture="camera" accept="image/*" name="fileimg[]" οnchange="previewImage(this,'list2_4');piczip(this.id,event)"/>
    			<input type="text"  id="4" name="fileimg3_4"/>
    			</div>
    			<div class="itemphoteo">
    				<img src="__TMPL__/img/num.jpg" id="list2_5"/>
    				<input type="file" class="filebtn" id="file_Id5" capture="camera" accept="image/*" name="fileimg[]" οnchange="previewImage(this,'list2_5');piczip(this.id,event)"/>
    		<input type="text"  id="5" name="fileimg3_5"/>
    			</div>
    		</div>
    <input type="submit" value="提交"  class="btnok"/>
    
    </form>      

    js代码:

     <script src="__TMPL__/js/index.js"></script>
    <script type="text/javascript">
    
     function piczip(fileId,e){
         //     var formData = new FormData(),
         var oFile = $('#'+fileId)[0].files[0],
          imgSize = oFile.size,
          
           inputid=fileId.substr(7,1);
     
     
    //    document.getElementById(fileId).οnclick=function(){
    //        console.log(inputid);
    //    }
      // alert(inputid);
    
          if(imgSize < 256 * 1024){
    //        console.log($("#list2_"+inputid).attr("src"));
    // document.getElementById(inputid).value=$("#list2_"+inputid).attr("src");
                  imgChange(e,inputid,fileId);
                
            } else {    // 图片压缩处理
                
            //    alert("2222");
                var reader   = new FileReader(),
                    maxWidth = 400,
                    maxHeight= 400,
                    suffix = oFile.name.substring(oFile.name.lastIndexOf('.') + 1);
    
                if(imgSize > 2 * 1024 * 1024){
                    //alert("3333");
                    maxWidth = 800;
                    maxHeight= 800;   
                }
    
                reader.onload = function(e) {
                    var base64Img= e.target.result;
                   //  alert(base64Img);
    //             console.log(base64Img);
    //                console.log(base64Img.length);
                    //--执行resize。
                    var _ir=ImageResizer({
                        resizeMode:"auto",
                        dataSource:base64Img,
                        dataSourceType:"base64",
                        maxWidth:maxWidth, //允许的最大宽度
                        maxHeight:maxHeight, //允许的最大高度。
                        onTmpImgGenerate:function(img){
                        },
                        success:function(resizeImgBase64,canvas){
                          //  var blob = dataURLtoBlob(resizeImgBase64);
                         //   formData.append(fileId, blob, oFile['name']);
                         //   alert(blob);
    //                      uploadPic(formData, picNum);
                         console.log(resizeImgBase64);
                           console.log(resizeImgBase64.length);
                            
                            
                          // alert(inputid);
                          if(resizeImgBase64){ document.getElementById(inputid).value=resizeImgBase64;}
                            
                              //console.log(document.getElementById(inputid).value);
                        }
                    });
                    
    //               alert(base64Img);
     
                    
                };
                
     reader.readAsDataURL(oFile);
                //alert(imgSize);
            }
          }
        
        
        
        function imgChange(e,inputid,fileId) {
        console.info(e.target.files[0]);//图片文件
        var dom =$('#'+fileId)[0].files[0];
        console.info(dom.value);//这个是文件的路径 C:\fakepath\icon (5).png
        console.log(e.target.value);//这个也是文件的路径和上面的dom.value是一样的
        var reader = new FileReader();
        reader.onload = (function (file) {
            return function (e) {
               console.info(this.result); //这个就是base64的数据了
    //          var sss=$("#showImage");
    //          $("#showImage")[0].src=this.result;
    
       document.getElementById(inputid).value=this.result;
            };
        })(e.target.files[0]);
        reader.readAsDataURL(e.target.files[0]);
        }
    </script>

    此时,前端压缩就已经成功了。会将压缩过后的图片base64格式编码赋值在隐藏为文本域当中,提交表单的方式提交php来处理

    接下来,我们在后台如何处理这些提交过来的base64格式的字符串,如何将他存储到服务器当中,然后将路径存入数据库

      php 代码:

    public function uploadzippic(){
                    $applicantid=I('applicantid');
                    $where['applicantid']=$applicantid;
                    $data['fileimg3_1'] = I('fileimg3_1');
                    $data['fileimg3_2'] =I('fileimg3_2');
                    $data['fileimg3_3'] =I('fileimg3_3');
                    $data['fileimg3_4'] =I('fileimg3_4');
                    $data['fileimg3_5'] =I('fileimg3_5');
                    $file_path="./Public/Imagessm/".date('Y-m-d H:i:s').uniqid()."/";
                    foreach($data as $k=>$v){
                            if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $v, $result)){
                                //var_dump($result);
                        $type = $result[2];
                        
                        $new_file = "./Public/Imagessm/";
                        if(!file_exists($new_file))
                        {
                            //var_dump(111111);
                        //检查是否有该文件夹,如果没有就创建,并给予最高权限
                        mkdir($new_file, 0700);
                        }
                        $new_file = $new_file.uniqid().".{$type}";
                        if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $v)))){
                        //echo '新文件保存成功:', $new_file;
                              $new_file=substr($new_file, 1);
                              $cate[$k]=$new_file;
                              M('applicant_info')->where($where)->save($cate);
                        }else{
                        echo '新文件保存失败';die;
                        }
                        }
                        
                    }
                    
                $this -> redirect('Home/RegisterInfo/agreem', array('applicantid' => $applicantid));
    
                    
    
                        }

    此时,就是大功告成,我们已将base64格式的字符串转成图片文件,并存入服务器当中,并且图片路径存入数据库,以便随时调取。



    展开全文
  • 前端压缩、缩放图片,还支持在手机上运行,使用起来也很简单: lrz(filePath, { width: 800, done: function (results) { img.src = results.base64; } }); filePath支持本地图片文件,也支持base64的dataURL
  • jszip.js前端压缩工具

    2018-09-27 11:26:29
    js前端打包工具,前端读取、创建压缩包。前端框架依赖包。
  • 自己编写简单粗暴有效代码!,可以用。利用html5 canvas处理图片,得到图片字节流,上传
  • web前端压缩图片方法——加快页面加载速度

           对于web前端页面开发,图片是一个很重要的组成部分。为了达到图文并茂的效果,我们希望页面中能有更多的图片,但是从页面加载的速度讲,过多过大的图片都会拖慢加载速度。于是对于图片的压缩处理就显得特别重要。下面分享一下我目前使用的几个处理方法。

    1.七牛服务器提供的压缩图片的方法

           我们公司APP目前使用的图片和视频文件都存在七牛服务器上,作为目前国内知名的云存储服务商,七牛官方提供了很好的图片处理API。

           一般来讲,用户看到的文字、图片等都是由运营上传的,如果运营直接在后台上传了一张很大的图片,那么前端页面在加载的时候就会较慢,有可能图片会有明显的加载过程,这个时候,就需要我们对图片进行处理了,比如我们公司的logo图标,地址是:点击打开链接。尺寸是1024*1024,大小是80.7kb,但是我只是需要在微信分享链接中使用这个图片,根本不需要这么大尺寸的图片,那么就很有必要压缩一下了,比如在这个图片的链接地址后面添加参数:?imageView2/2/w/300,就能够把这张图片压缩到300*300,大小为28.9kb。这样这张图片的加载速度就会加快很多。

    2.使用图片压缩软件

          软件地址:图片压缩工具。直接将图片上传就可以压缩图片,很适合运营用。

    3.图片使用懒加载技术

          可使用lazyload.js插件,对于DOM中本来就有的<img>标签,懒加载没有任何问题,但是在我做的一个项目中,项目中的图片是用underscore.js模板加载的,实际调试发现lazyload.js未实现图片懒加载,这个问题后续解决了再写上来。如果有童鞋知道怎么解决的,请不吝赐教。

    展开全文
  • 根据公司业务需求在前端裁剪对应的图片,并压缩图片,然后上传到阿里云OSS存储! 找了很久的资料,并没有发现合适的整合dome,于是自己花了一下时间整合了一下, 其中包括了对应的裁剪,压缩,上传有对应的注释...
  • 如题,这个东西超牛逼,前端压缩、缩放图片,还支持在手机上运行,使用起来也很简单: lrz(filePath, { width: 285, height: 164, done: function (results) { img.src = results.base64; } }); filePath支持...
  • html5前端对图片进行压缩压缩后提交给php由php来保存至服务器。可以设置目标图片的大小。
  • 求HTML5 上传图片在前端压缩教程示例代码 能带用AJAX提交 asp.net后台代码接收那就最好不过了
  • 前端压缩图片 tinypng

    千次阅读 2018-05-29 00:21:36
    前端写页面,很多时候会引入大量的图片,网页打开的时候加载速度就会成为一个问题,尤其是在目前的移动端(未来网速大幅提升的情况下会好很多),现在这样的情况下压缩图片是很好的选择,可以加快网页打开的速度,让...
  • 前端压缩图片 -- vue项目使用localResizeIMG插件 -- 实例本博没有新的东西, 都是东拼西凑的. 但是, 组合出了个宝贝, 包括: 文件类型/宽高/大小的校验, 还有展示图片 参照博客: ...
  • 前端压缩--Base64图片压缩原理

    千次阅读 2020-08-06 15:42:23
    本篇文章参考以下博文 前端实现图片压缩(转base64) 文章目录                   橘色 蓝色 红色 绿色

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,231
精华内容 46,492
关键字:

前端压缩