zoukankan      html  css  js  c++  java
  • 压缩拉伸图片

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/14369984.html

    压缩或者拉伸图片

    说明

    有时需要从相册选图片,从相册选择的图片在界面显示时,选择的图片大小可能与给定显示图片位置的大小不一致,可能比给定的位置大或者比给定的位置小。需要对图片裁剪。

    技术

    说明

    1.原始图片的宽高比显示区域较小,需要拉伸图片。

    2.画布的宽为300,高为200,图片的高为h,宽为w,宽高比:dw=300/w,dh=200/h。

    拉伸图片

    拉伸图片情况:

    1. 原始图片宽高均小于显示区域 
    默认情况下会将原始图片的宽高都扯开成刚好铺满画布。这种情况不需要考虑。

    2. 原始图片仅宽度小于显示区域:

    思路:将原始图片宽度拉开成现实区域宽度,而将高度等比例拉开,并且将超出部分上下各剪裁一半。

    3.原始图片仅高度小于显示区域:

    思路:将原始图片高度拉开成现实区域宽度,而将宽度等比例拉开,并且将超出部分左右各剪裁一半。

    压缩图片

    压缩图片说明:

    原始图片的宽高比显示区域较大,需要压缩图片。

    当压缩图片时,选取小的超出部分进行压缩,把多的部分等比例拉伸后裁剪。

    压缩图片情况:

    1.当dw<dh

     思路:将原始图片高度压缩成显示区域宽度,而将宽度等比例压缩,并且将超出部分左右各剪裁一半。

     2.dh<dw

    思路:将原始图片高度压缩成显示区域宽度,而将宽度等比例压缩,并且将超出部分左右各剪裁一半。

    代码

    if(w > 300 && h > 200 || w < 300 && h < 200){
                  if (dw > dh) {
                      ctx.drawImage(tempFilePaths, 0, (h - 200/dw)/2, w, 200/dw, 0, 0, 300, 200)
                  } 
                  else {
                      ctx.drawImage(tempFilePaths, (w - 300/dh)/2, 0, 300/dh, h, 0, 0, 300, 200)
                  }
              }
              else{
                  if(w < 300){
                      ctx.drawImage(tempFilePaths, 0, (h - 200/dw)/2, w, 200/dw, 0, 0, 300, 200)
                  }
                  else {
                      ctx.drawImage(tempFilePaths, (w - 300/dh)/2, 0, 300/dh, h, 0, 0, 300, 200)
                  }
             }

     参考博客链接:https://blog.csdn.net/vivian_jay/article/details/68933161 。

    出来混总是要还的
  • 相关阅读:
    mysql导入到elasticsearch
    ulimit -c unlimited
    ajax 调用后台接口示例
    完整的拆分nginx访问日志
    rsyslog input 不支持变量
    完整的多项匹配tomcat access日志的正则
    logstash 中的贪婪匹配
    logstash 内置匹配IP
    时间类处理<1>
    JS获取鼠标位置,兼容IE FF
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14369984.html
Copyright © 2011-2022 走看看