参考资料:

http://www.imooc.com/article/40038

https://github.com/xkeshi/image-compressor

示例代码:

<nz-upload class="avatar-uploader" [nzAccept]="'image/*'" nzFileType="image/png,image/jpeg,image/gif,image/jpg" [nzAction]="uploadPictureUrl" nzName="avatar" nzListType="picture-card" [nzShowUploadList]="false" [nzCustomRequest]="uploadImp" (nzChange)="handleChange($event)">
<ng-container *ngIf="!imageUrl">
<i nz-icon nzType="picture" nzTheme="outline"></i>
<div class="ant-upload-text">上传</div>
</ng-container>
<img *ngIf="imageUrl" [src]="imageUrl" class="avatar" style="width:100px;height: 100px;">
</nz-upload>
<p>请上传jpg, gif, png格式的图片。建议图片尺寸&nbsp;宽:90px;高:90px</p>
import ImageCompressor from 'image-compressor.js'
// 自定义上传方法的实现
uploadImp = async (item) => {
debugger
const isJPG = item.file.type.indexOf('image') > -;
if (!isJPG) {
this.message.error('只能上传图片文件!');
return;
}
// 进行图片压缩
const compressionFile = await new ImageCompressor().compress(item.file, {
quality: .,
maxWidth: ,
maxHeight: ,
convertSize: , //超过600kb压缩
success(result) {
},
error(e) {
console.log(e);
debugger
throw { message: `压缩失败${e.message}` }
}
}).then(ret => {
debugger
console.log(ret);
item.file = ret;
if (ret.size > * ) throw { message: '压缩后的图片不能超过600KB' };
const formData = new FormData();
formData.append('file', item.file, item.file.name);
this.http.post(this.uploadPictureUrl, formData).subscribe(result => {
debugger
});
}).catch((err) => {
const msg = err.message ? err.message : err;
this.message.error(`图片上传失败,请重试:${msg}`);
});
}
public string UploadImgToOss()
{
var file = Request.Form.Files.FirstOrDefault();
if (file == null)
throw new UserFriendlyException(L("FileInfo_Change_Error"));
var fileInfo = new FileInfo(file.FileName); var fileExt = Path.GetExtension(file.FileName);
byte[] fileBytes; string url = "";
using (var stream = file.OpenReadStream())
{ fileBytes = stream.GetAllBytes(); if (!ImageFormatHelper.GetRawImageFormat(fileBytes).IsIn(ImageFormat.Jpeg, ImageFormat.Png, ImageFormat.Gif))
{
throw new UserFriendlyException("请上传图片文件,仅接受Jpg、PNG、Gif三种格式!");
} var upLoadPath = "/Upload/" + DateTime.Now.ToString("yyyy") + "/" + DateTime.Now.ToString("MM") + "/";
var newFileName = $"{DateTime.Now:yyyyMMddHHmmss}_{Guid.NewGuid():n}_{fileExt}"; var data = new MemoryStream(fileBytes);
var result = OssDrive.UpLoad(newFileName, data);
if (!result.Status)
{
throw new UserFriendlyException(result.Message);
}
url = "http://" + result.Data.Url;
}
return url;
}

Angular里使用(image-compressor.js)图片压缩的更多相关文章

  1. 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器

    使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...

  2. js图片压缩和上传并显示

    由于近期项目中需要做个图片压缩上传,所以就在网上找了些资料自己写了一个 html部分 <input id="file" type="file"> & ...

  3. js 图片压缩上传(base64位)以及上传类型分类

    一.input file上传类型 1.指明只需要图片 <input type="file" accept='image/*'> 2.指明需要多张图片 <input ...

  4. js图片压缩+ajax上传

    图片压缩用到了localresizeimg 地址: https://github.com/think2011/localResizeIMG 用起来比较简单 <input type="f ...

  5. JS—图片压缩上传(单张)

    *vue+webpack环境,这里的that指到vue实例 <input type="file" name="file" accept="ima ...

  6. 无组件客户端js图片压缩

    <div class="free-upload"> <p>上传您的约会照片,一张合影.一张票据哦!</p> <div class=&quo ...

  7. js 图片压缩上传(纯js的质量压缩,非长宽压缩)

    下面是大神整理的demo,很实用,这里存一下备用,感谢大神! 此demo为大于1M对图片进行压缩上传 若小于1M则原图上传,可以根据自己实际需求更改. demo源码如下 <!DOCTYPE ht ...

  8. js图片压缩

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. js图片压缩上传

    最近公司的移动产品相约app要做一次活动,涉及到图片上传,图片又不能太大,不然用户体验太差,必须先压缩再上传,所以用到了html5的canvas和FileReader,代码先上,小弟前端经验不足,代码 ...

随机推荐

  1. SimpleDateFormat线程不安全及解决办法(转)

    以前没有注意到SimpleDateFormat线程不安全的问题,写时间工具类,一般写成静态的成员变量,不知,此种写法的危险性!在此讨论一下SimpleDateFormat线程不安全问题,以及解决方法. ...

  2. Mixed Content混合内容错误 Iframe Http页面无法访问

    问题描述 为通过安全测试, 系统升级为https, 后由于新增了接口(页面集成方式, 即第三方系统某一个界面需要嵌入到我们系统的某个页面中) 采用iframe和重定向方式都报同样的错误, 意思就是我们 ...

  3. OpenSSL 通过OCSP手动验证证书

    翻译:https://raymii.org/s/articles/OpenSSL_Manually_Verify_a_certificate_against_an_OCSP.html?utm_sour ...

  4. hdu 2510

    Tiling_easy version Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  5. sass,compass学习笔记总结

    最近在进行百度前端技术学院的任务,知道自己基础薄弱,可没想到弱到这种地步,同时在安装各种软件的同时遇到了各种坑,查阅了各种资料,一个个解决的时候也发现自己凌乱了.学习总结,在脑海中形成自己的学习系统才 ...

  6. typedef struct和指针

    在学习链表时遇到了typedef已经用typedef定义的指针,不是很懂,某浪里有位博主的博文写的很详细,我直接粘过来 假设我们定义一个结构体: typedef struct ANSWER_HEADE ...

  7. IDEA checkout Git 分支 弹出 Git Checkout Problem

    1. 本地分支切换的时候(例如A切到B),会弹出来Restore workspace on branch switching 对话框,如果选择是的话,在切换分支的时候,你在当前分支(A)所做的一些还未 ...

  8. logserver 日志服务项目发布

    logserver是使用logback.light-4j.commons-exec等构建的简单日志服务,参考项目logbackserver和light4j,支持跟踪日志.分页查看.搜索定位.下载文件等 ...

  9. 简述python中的@staticmethod作用及用法

    关于@staticmethod,这里抛开修饰器的概念不谈,只简单谈它的作用和用法. staticmethod用于修饰类中的方法,使其可以在不创建类实例的情况下调用方法,这样做的好处是执行效率比较高.当 ...

  10. window10 安装.net framework 2.0插件

    1 背景 电脑升级到window10操作系统之后,在使用过程中安装某些软件(如 BI publisher)需要用到.net framework 2.0/3.5 框架. 例如:直接安装BI publis ...