webpack2使用ch10-处理图片(png jpg svg 等) 限制图片 压缩图片

1 目录展示 安装依赖

"file-loader": "^0.11.1",
"image-webpack-loader": "^3.3.0",
"url-loader": "^0.5.8",

2 css中使用图片 

2.1  webpack.config.js

const webpack = require(‘webpack‘),
      htmlWebpackPlugin = require(‘html-webpack-plugin‘),
      path = require(‘path‘);

module.exports = {
    entry: ‘./src/app.js‘,
    output: {
        path: path.resolve(__dirname, ‘./dist‘),
        filename: ‘js/[name]-[chunkhash].js‘,
    },
    module: { //loader第三种使用方式 配置项设置 其他1引入 2cli
      loaders: [
          {   //解析.js
              test: ‘/\.js$/‘,  //正则匹配.js文件
              loader: ‘babel‘,  //使用babel 要先安装 cnpm install --save-dev babel-loader babel-core
              exclude: path.resolve(__dirname, ‘node_modules‘), //优化babel 排除
              include: path.resolve(__dirname, ‘src‘),//优化babel 打包范围
              query: {
                  presets: [‘env‘] //使用方式之1 cnpm install --save-dev babel-preset-env 告诉babel如何处理
              }
          },
          {   //解析 .css
              test: /\.css$/,
              loader: ‘style-loader!css-loader!postcss-loader‘ //style-loader!css-loader 解析使用
                                                               // css postcss-loader后端浏览器优化(加前缀)
                                                               //要先加载 postcss-loader写在后面
                                                               //?importLoaders=1 css import ‘xxx.css‘
          },
          { //解析 .less
              test: /\.less$/,
              loader: ‘style-loader!css-loader!postcss-loader!less-loader‘
          },{ //解析 .html
              test: /\.html$/,
              loader: ‘html-loader‘
          },{ //解析 .tpl
              test: /\.tpl$/,
              loader: ‘ejs-loader‘
          },{ //解析 图片
              test: /\.(png|jpg|gif|svg)$/,
              loader: ‘file-loader‘,
              query: {
                  name: ‘assets/[name]-[hash:5].[ext]‘
              },
          }
      ]
    },
    plugins: [
        new htmlWebpackPlugin({
            filename: ‘index.html‘,
            template: ‘index.html‘,
            inject: ‘body‘
        }),
        new webpack.LoaderOptionsPlugin({ //浏览器加前缀
            options: {
                postcss: [require(‘autoprefixer‘)({browsers:[‘last 5 versions‘]})]
            }
        }),
    ]
};

2.2 app.js

import Layer from ‘./components/layer/layer.js‘;
import ‘./style/common.css‘;

const  App = function () {
    const dom = document.getElementById(‘app‘);
    let layer = new Layer();
    dom.innerHTML = layer.tpl({
        name: ‘jeson‘,
        arr: [‘张三‘, ‘李四‘, ‘王五‘, ‘赵六‘]
    });
}

new App();

2.3 layer.js

import tpl from ‘./layer.tpl‘;
import ‘./layer.less‘;

function layer() {
    return {
        name: ‘layer‘,
        tpl: tpl
    }
};

export default layer;

2.4 layer.less

.layer{
  @w:100px;
  @h:200px;

  width:@w;
  height:@h;
  background-color:blue;

  div{
    width:@w - 50;
    hieght:@h - 100;
    background-color:red;
    display: flex;
    background:url(‘../../assets/girl1.jpg‘);
  }
}

2.5 打包

2.6 效果

2.7 使用 url-loader

--url-loader 对图片大小进行限制 满足条件的转换为base64格式,大于limit 交给file-loader处理

2.7.1 webpack.config.js 修改

{ //解析 图片
              test: /\.(png|jpg|gif|svg)$/,
              loader: ‘url-loader‘,
              query: {
                  limit: 20000, //20k
                  name: ‘assets/[name]-[hash:5].[ext]‘ //图片编译后放置在文件夹assets下 [name]图片原名 [hase:5]5位的hash值 [ext]图片原类型
              }
 }

2.7.2 打包

2.7.3 查看

原图片 19.1k 小于20k

2.7.4 修改限制

{ //解析 图片
              test: /\.(png|jpg|gif|svg)$/,
              loader: ‘url-loader‘,
              query: {
                  limit: 10000, //10k
                  name: ‘assets/[name]-[hash:5].[ext]‘ //图片编译后放置在文件夹assets下 [name]图片原名 [hase:5]5位的hash值 [ext]图片原类型
              }
 }

2.7.5 再次打包

2.7.6 再次查看

2.8 压缩图片 image-webpack-loader

2.8.1 修改webpack.config.js

{ //解析 图片
              test: /\.(png|jpg|gif|svg)$/,
              /*loader: ‘url-loader‘,
              query: {
                  limit: 10000, //20k
                  name: ‘assets/[name]-[hash:5].[ext]‘
              }*/
              loaders: [ //写成loaders数组集合形式
                  ‘url-loader?limit=10000&name=assets/[name]-[hash:5].[ext]‘,
                  ‘image-webpack-loader?bypassOnDebug&optimizationLevel=7&interlaced=false‘
              ]
          }

2.8.2 打包

2.8.3 查看

未压缩前 与源图片大小相同;

此时

3 项目根目录文件,index.html插入图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

</head>

<body>
    <img src="src/assets/girl1.jpg" >
    <div id="app"></div>
</body>
</html>

 没什么好设置的 可以自动转换

 4 组件中插入图片

 4.1 layer.tpl---引入路径是绝对路径不会出问题;相对路径需要用 ${require(‘xxx‘)}

<div class="layer">
    <img src="${require(‘../../assets/girl1.jpg‘)}"/>
    <div>this is <%= name %></div>
    <% for(let i=0;i<arr.length;i++){ %>

        <%= arr[i]  %>

    <% } %>
</div>

时间: 2024-11-04 11:38:52

webpack2使用ch10-处理图片(png jpg svg 等) 限制图片 压缩图片的相关文章

js实现svg图形转存为图片下载[转]

我们知道canvas画布可以很方便的js原生支持转为图片格式并下载,但是svg矢量图形则并没有这方面原生的支持.研究过HighChart的svg图形的图片下载机制,其实现原理大体是浏览器端收集SVG代码信息,并发送到到服务器端,由后端程序转换成图片格式后,以流的形式反射给浏览器端下载. 最近在项目中有需求将一个非HighChart的SVG地图转存为图片并下载的功能.本希望模拟HighChart的原理实现,可是研究发现,该地图的SVG代码信息多达两万字节,然而HighChart后端制图程序却有着字

JPG、PNG、GIF、SVG、WebP 等格式图片区别

资料 网址 有助于优化产品和适配的两种图片格式:WebP&SVG https://www.ui.cn/detail/93964.html JPG.PNG.GIF.SVG 等格式图片区别 https://www.cnblogs.com/gaoht/p/10482942.html 原文地址:https://www.cnblogs.com/cag2050/p/12089230.html

玩转HTML5移动页面

(1) 动画雪碧图 涉及的动画十分多,用的元素也十分多,请务必使用雪碧图(Sprite)! 网上的工具有一些可以帮助你生成雪碧图的工具,例如CssGaga,GoPng等等,自动化构建工具Grunt和Gulp也提供了相应插件. 特别地,如果单张雪碧图面积实在太大,可以拆分雪碧图,例如拆分成2-4张,因为现代浏览器都支持4-6个同源请求下载,若资源实在太多,也可以考虑把静态资源放在不同源域名下去请求,这里牺牲多几个请求换来图片同时加载比一张图片慢慢加载要好,当然,这需要具体情况去衡量. 顺便提一下,

初识gd库

必备基础 开启GD拓展 列表使用 获取图片信息代码 图片详细信息 特效函数 示例 运行结果 分析 获取图片基本信息 获取图片宽度 获取图片高度 获取图片后缀名 获取图片mime类型 操作图片 添加文字水印 添加图片水印 压缩图片 输出图片 输出到浏览器 输出到文件 封装成工具类 封装代码 测试实例 测试结果 总结 最后来总结一下本文的主要内容 本文的应用方向 gd2在php处理图片相关操作上是非常的方便而且快速的.而且有些时候也很有必要,诸如对用户上传的图片进行压缩处理来提高响应速度,添加文字水

玩转HTML5移动页面(转自http://tqtan.com/)

标题起得有点大(?´?`?),今天来谈谈H5移动页面的开发心得(技巧). 一般情况下,拿到设计稿你有两种选择://条件表达式产物=设计稿处理?静态输出:让页面动起来: 作为一个有志向的前端,当然不会让页面生硬地静态展示啦(?´?`)!可是需求时间又很短很短,怎么办呢?所以下面的一些小技巧,至少能在你没有想法的时候让你的页面生动不少呢,同时也能确保你的页面不会出什么问题(后面有页面优化技巧). ====前方高能==== TIPS1 CSS3时序错开渐显动画 这是一种比较常用的动画,它的优点是节奏感

HTML5/CSS3教程:使用SVG图片

在我们开始使用SVG前,让我们先了解一下 SVG,并且解释一下为什么使用SVG. SVG全称是Scalable Vector Graphics,如果你使用过adobe Illustrator的话,相信你对这种适量格式的图片并不陌生! 为什么使用SVG? 文件非常小 能够无损失的缩放尺寸 在Retina显示屏上效果超棒 能够控制图片样式设计,例如互动和过滤filter 浏览器支持 IE8及其更低版本不支持 Android 2.3及其更低版本不支持.精心开发5年的UI前端框架! 其它浏览器都支持 如

使用Batik绘制SVG图并保存为png图像格式

SVG(Scalable Vector Graph)--可缩放矢量图形. 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. 思考 使用SVG实现一个miniCAD 参考代码来源http://outofmemory.cn/code-snippet/1096/java-jiang-svg-tupian-switch-png-format-tupian: package cn.outofmemory.util; im

Android APK瘦身大法——SVG图片瘦身

前两天和上家公司的上司无意聊了聊工作的事,也就顺便扯到了apk瘦身上.主要是通过SVG进行图片压缩来减少app的大小.下面我就详细介绍一下如何实现SVG的图片压缩. SVG的优点 SVG 可被非常多的工具读取和修改(比如记事本),由于使用xml格式定义,所以可以直接被当作文本文件打开,看里面的数据: SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强,SVG 图就相当于保存了关键的数据点,比如要显示一个圆,需要知道圆心和半径,那么SVG 就只保存圆心坐标和半径数据,而平常我们

SVG绘图(二) —— 渲染满天星辰

看到一些炫酷的动画,总有种好想实现它,但是又无奈于腹中的代码量略少,只好不明觉厉,圆圆的大眼睛里满是对新事物的渴求. 在网页中嵌入动画,过去比较流行采用Falsh.Java Applet和微软的SilverLight,但他们的网页安全性.兼容性.难操作性以及文件的大小等缺陷让很多Web开发者又爱又恨.Gif依旧是个不错的选择,但遗憾的是并不能用DOM操控其中的元素.自从有了SVG.HTML5和CSS3,一些简单的平面动画的实现变得方便和简单,虽然他们在一些方面譬如兼容性和可操作性等依然未能完全尽