1. function CutImgToBase(fn: string): string; // 压缩图片只能压缩bmp:将jpg转换成bmp再压缩
  2. var
  3. m1: TMemoryStream;
  4. m2: TStringStream;
  5. jpg: TJPEGImage;
  6. bmp: TBitmap;
  7. begin
  8. jpg := TJpegImage.Create;
  9. bmp := TBitmap.Create;
  10. m1 := TMemoryStream.Create;
  11. m2 := TStringStream.Create;
  12. jpg.LoadFromFile(fn);
  13. bmp.Width := jpg.Width div 2;
  14. bmp.Height := jpg.Height div 2;
  15. bmp.Canvas.StretchDraw(bmp.Canvas.ClipRect, jpg);
  16. jpg.Assign(bmp);
  17. jpg.CompressionQuality := 30;
  18. jpg.Compress; // 先指定大小再压缩
  19. jpg.SaveToStream(m1);
  20. m1.Position := 0; // 一定要还原指针,才能base64
  21. EncdDecd.EncodeStream(m1, m2);
  22. result := m2.DataString.Replace(#13, '').Replace(#10, '');
  23. bmp.Free;
  24. jpg.Free;
  25. m1.Free;
  26. m2.Free;
  27. end;

调用函数:

  1. procedure TForm2.Button4Click(Sender: TObject); // 调用函数 压缩并编码
  2. var
  3. m: TStringStream;
  4. s: string;
  5. begin
  6. s := CutImgToBase('test.jpg');
  7. FilePutContents('mm.txt', s);
  8. m := TStringStream.Create(s);
  9. Memo1.Lines.Add(m.DataString);
  10. m.SaveToFile('base64.txt');
  11. end;

解码Base64测试:

  1. procedure TForm2.DecodeBaseClick(Sender: TObject); // 解码
  2. var
  3. m1: TStringStream;
  4. m2: TMemoryStream;
  5. begin
  6. m1 := TStringStream.Create;
  7. m2 := TMemoryStream.Create;
  8. m1.LoadFromFile('base64.txt');
  9. EncdDecd.DecodeStream(m1, m2);
  10. m2.SaveToFile('1.jpg');
  11. m1.Free;
  12. m2.Free;
  13. end;

将图片压缩后转Base64函数的更多相关文章

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

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

  2. html + js 实现图片上传,压缩,预览及图片压缩后得到Blob对象继续上传问题

    先上效果 上传图片后(设置了最多上传3张图片,三张后上传按钮消失) 点击图片放大,可以使用删除和旋转按钮 (旋转功能主要是因为ios手机拍照后上传会有写图片被自动旋转,通过旋转功能可以调正) html ...

  3. Vue directive自定义指令+canvas实现H5图片压缩上传-Base64格式

    前言 最近优化项目-手机拍照图片太大,回显速度比较慢,使用了vue的自定义指令实现H5压缩上传base64格式的图片 canvas自定义指令 Vue.directive("canvas&qu ...

  4. 在线图片压缩后以ImageIO 流的形式 设置大小显示指定页面

    1.Servlet   代码 public class ZoomImgServlet extends HttpServlet implements Servlet { public void init ...

  5. js/vue图片压缩

    js版 新建compressImage.js,内容如下: // 将base64转换为blob(有需要可加上,没需要可不加) function convertBase64UrlToBlob(urlDat ...

  6. JavaScript前端图片压缩

    实现思路 获取input的file 使用fileReader() 将图片转为base64 使用canvas读取base64 并降低分辨率 把canvas数据转成blob对象 把blob对象转file对 ...

  7. iOS图片压缩处理

    理解概念 首先,我们必须明确图片的压缩其实是两个概念: “压” 是指文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降. “缩” 是指文件的尺寸变小,也就是像素数减少,而长宽尺寸变小,文件体 ...

  8. Android性能优化之图片压缩优化

    1 分类Android图片压缩结合多种压缩方式,常用的有尺寸压缩.质量压缩.采样率压缩以及通过JNI调用libjpeg库来进行压缩. 参考此方法:Android-BitherCompress 备注:对 ...

  9. H5图片压缩上传

    1.所用到技术 HTML5 API:filereader.canvas 以及 formdata 目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的实现.本次使用到的FileRea ...

随机推荐

  1. 游戏中的人工智能——初探AI

    一.游戏中的人工智能 让游戏具有挑战性: 让游戏好玩的关键因素是为之找到合适的难度等级: 人工智能在游戏中的作用是通过提供富有挑战性的竞争对象来让游戏更好玩,而在游戏中行动逼真的非玩家角色(NPC), ...

  2. yii2 pjax使用

    Pjax::begin(['id'=>'datalist']); echo GridView::widget([ 'dataProvider' => $dataProvider, 'col ...

  3. 控制反转IOC与依赖注入DI

    理解 IOC  http://www.cnblogs.com/zhangchenliang/archive/2013/01/08/2850970.html IOC 相关实例      的http:// ...

  4. sqlserver索引与查询优化

    此文为转载,仅做保存使用,出处:http://www.cr173.com/html/8688_all.html 在数据库存优化设计中往往会提到索引,这编文章就来详细的说明一下在 SQL SERVER ...

  5. sk_buff封装和解封装网络数据包的过程详解(转载)

    http://dog250.blog.51cto.com/2466061/1612791 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体 ...

  6. Spring Framework 笔记(一):IoC

    一:Spring中重要的概念 1. 容器( container ) : spring容器( ApplicationContext )的工作原则是创建容器中的组件( instance ),处理组件之间的 ...

  7. 利用PHP取二进制文件头判断文件类型

    <?php $files = array('D:\no.jpg', 'D:\no.png','D:\no2.JPEG','D:\no.BMP'); $fileTypes = array( 779 ...

  8. PHP标准注释

    "php是一门及其容易入门的语言,刚入门的新手不到几分钟的时间可能就会用echo打印出一个hello world !但是他是真正的程序员吗?怎么来定义程序员呢?如果想真正成为一个程序员,那么 ...

  9. My安卓知识4--Media Player called in state 0

    //根据被传递的歌曲名称,选择播放的歌曲    public void playByName(String name){        mp = new MediaPlayer();        t ...

  10. sql server convert 日期

    ),) --2016/11 ),) --2016-11-03 17:46:47