渐进式Jpg图片

网速比较慢的时候,会出现图片的空白,为了提升用户体验,可以先加载一个缩略图,然后加载一个渐进式图片(从模糊到清晰);实现中暂时只放出来图片byte[]的转换,其实可以实现stream,bitmap等的转换,不再列举;

ps:需要借助Magick.NET

 

        /// <summary>
        /// 转换Jpg渐进式
        /// </summary>
        /// <param name="data">图片数据</param>
        /// <returns></returns>
        public byte[] ConvertProgressive(byte[] data)
        {
            byte[] resData = null;
            using (MemoryStream mStream = new MemoryStream())
            {
                using (MagickImage image = new MagickImage(data))
                {
                    image.Format = MagickFormat.Pjpeg;
                    image.Write(mStream);
                }
                resData = mStream.ToArray();
            }
            return resData;
        }

        /// <summary>
        /// 固定宽度等比缩放图片
        /// </summary>
        /// <param name="data"></param>
        /// <param name="width"></param>
        /// <returns></returns>
        public byte[] ScaleImageByWith(byte[] data, int width)
        {
            byte[] resData = null;
            using (MagickImage image = new MagickImage(data))
            {
                var imageSmall = image.Clone();
                imageSmall.Scale(width, image.Height * width / image.Width);
                using (MemoryStream mStream = new MemoryStream())
                {
                    imageSmall.Write(mStream);
                    resData = ConvertProgressive(mStream.ToArray()) ;
                }
            }
            return resData;
        }

  

时间: 2024-08-09 10:25:09

渐进式Jpg图片的相关文章

创建渐进式jpeg图片

<?php // Create an image instance $im = imagecreatefromjpeg('test.jpg'); // Enable interlancing imageinterlace($im, true); // Save the interlaced image imagegif($im, './progressive.jpg'); imagedestroy($im); ?> http://blog.jobbole.com/44038/

Android中常见的图片加载框架

图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行图片加载. 开源框架的源码还是挺复杂的,但使用较为简单.大部分框架其实都差不多,配置稍微麻烦点,但是使用时一般只需要一行,显示方法一般会提供多个重载方法,支持不同需要.这样会减少很不必要的麻烦.同时,第三方框架的使用较为方便,这大大的减少了工作量.提高了开发效率.本文主要介绍四种常用的图片加载框架,

关于图片加载框架

接上篇,这篇开始对现在比较的流行的第三方图片加载框架做一个对比总结. 这篇文章介绍内容如下: 1.目前流行的图片加载框架有什么? 2.各自的使用方法 3.各自的优缺点 4.优化问题 一.目前流行的图片加载框架有什么? ImageLoader   Glide  Picasso  Fresso(2015年) 注:由于现在ImageLoader使用较少,本篇博文将不再对它进行阐述.主要以其它三个框架为主,有兴趣的同学可以自行学习. 二.各自的使用方法 Picasso:  Picasso .with(t

Android 三大图片缓存原理、特性对比

这是我在 MDCC 上分享的内容(略微改动),也是源码解析第一期发布时介绍的源码解析后续会慢慢做的事. 从总体设计和原理上对几个图片缓存进行对比,没用到他们的朋友也可以了解他们在某些特性上的实现. 上篇关于选择开源项目的好处及如何选择开源项目可见:开源项目使用及选型. 一. 四大图片缓存基本信息 Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用. Picasso 是 Square 开源的项目,且他的主导者是 JakeWharton,所以广为人知. Glide

Fresco图片框架内部实现原理探索

流行的网络框架 目前流行的网络图片框架: Picasso.Universal Image Loader.Volley的(ImageLoader.NetworkImageView).Glide和Fresco 简明的介绍下(具体细节和功能可看源码和wiki): 其中Picasso和Universal Image Loader相比其它的算是最轻量级的图片框架了,它们拥有较少的方法数,Universal Image Loader是这五个框架中定制性最强的,它内部实现还是按网络框架的套路走:HttpUrl

Fresco图片载入框架之自总结Demo分享

学习资源汇总: 1.Fresco中文解说教程:http://www.fresco-cn.org/ 2.Fresco项目github地址:https://github.com/facebook/fresco 3.自己结合上面两个资源在Android Studio下编写的Fresco完整功能总结Demo:https://github.com/NateRobinson/FrescoStudyDemo Demo效果图: 首页: 带进度条的图片: 图片的不同裁剪 圆形和圆角图片      渐进式展示图片

使用渐进式 JPEG 来提升用户体验

今天才认识到原来JPEG文件有两种保存方式他们分别是Baseline JPEG(标准型)和Progressive JPEG(渐进式).两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别是二者显示的方式不同. Baseline JPEG 这种类型的JPEG文件存储方式是按从上到下的扫描方式,把每一行顺序的保存在JPEG文件中.打开这个文件显示它的内容时,数据将按照存储时的顺序从上到下一行一行的被显示出来,直到所有的数据都被读完,就完成了整张图片的显示.如果文件较大或者网络下载速度较

2014/11/28 – 图片转化为Progressive JPEG

JPEG文件有两种保存方式他们分别是Baseline JPEG(标准型)和Progressive JPEG(渐进式).两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别是二者显示的方式不同. 另外渐进式的图片的大小并不会和基本的图片大小相差很多,有时候可能会比基本图片更小.渐进式的图片的缺点就是吃用户的CPU和内存,不过对于现在的电脑来说这点图片的计算并不算什么. using (Image source = Image.FromFile(@"D:\temp\test2.jpg&q

Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库

一.依赖注入DI 通过依赖注入减少View.服务.资源简化初始化,事件绑定等重复繁琐工作 AndroidAnnotations(Code Diet) android快速开发框架 项目地址:https://github.com/excilys/androidannotations 文档介绍:https://github.com/excilys/androidannotations/wiki 官网网址:http://androidannotations.org/ 特点:(1) 依赖注入:包括view