图片压缩后,依然很大的解决方案

简介: 图片压缩后,依然很大的解决方案

昨天碰到一个很奇怪的事情,在最近的一个项目有这样的一个需求,把上传的图片进行压缩,避免因图片过大而影响浏览速度。


代码也很简单三两句就可以实现了,但发现压缩后的图片,虽然有变小,但还不是很明显。

代码如下: 

public void CreateThumbnailImage() { Image img = Image.FromFile("e:/1.jpg"); Image.GetThumbnailImageAbort cb = new Image.GetThumbnailImageAbort(CallBack); Image thumbnailImage = img.GetThumbnailImage(120, 120, cb, System.IntPtr.Zero); thumbnailImage.Save("e:/2.jpg"); } public bool CallBack() { return false; }

本来是一张大约800*700的图片(80kb),压缩到120*110左右的图片,大小应该在10kb以内,但我却发现压缩后的图片却有45kb。有个别的图片压缩后反而比原来的更大,而且用网页打开也无法显示。


后来查了一下相关的文档,发现.net在保存图片时,是以png默认的格式来保存,我想问题应该就是出在这了,还是试试吧。  

 

//获得缩略图 public void CreateThumbnailImage() { string imgFile = "e:/1.jpg"; Image img = Image.FromFile(imgFile); Image.GetThumbnailImageAbort cb = new Image.GetThumbnailImageAbort(CallBack); Image thumbnailImage = img.GetThumbnailImage(120, 120, cb, System.IntPtr.Zero); string extendName = imgFile.Substring(imgFile.LastIndexOf(".") + 1); ImageFormat imgFormat = GetImageFormat(extendName); thumbnailImage.Save("e:/2.jpg",imgFormat); } public bool CallBack() { return false; } //获得图片格式 private static ImageFormat GetImageFormat(String extendName) { extendName = extendName.ToLower(); if (extendName == "gif") { return ImageFormat.Gif; } else if (extendName == "jpg" || extendName == "jpeg") { return ImageFormat.Jpeg; } else if (extendName == "bmp") { return ImageFormat.Bmp; } else if (extendName == "wmf") { return ImageFormat.Emf; } else if (extendName == "exif") { return ImageFormat.Exif; } else if (extendName == "icon") { return ImageFormat.Icon; } else if (extendName == "tiff") { return ImageFormat.Tiff; } else { return ImageFormat.Png; } }


还真的是这样,压缩后的图片大小就只有4.6kb。

 

压缩注意事项:

 

1、压缩图片要指定保存的格式,虽然保存后图片名称是对的,但图片还是很大,而且在网页上还无法显示。

 

2、对于图片格式为gif且为透明的图片,如果压缩后要保留透明的,那压缩的格式就要用png的,而且图片的扩展名也为png,若压缩成gif的格式,它无法保留透明的部分。


相关文章
|
2月前
|
缓存 编解码 测试技术
基于iOS平台的高效图片处理技术实践
【4月更文挑战第7天】 在移动应用开发领域,图片处理是一个常见且要求高性能的功能模块。特别是在iOS平台上,由于其封闭的生态系统和用户对流畅体验的高期待,开发者需采用高效的图片处理技术以满足应用的性能需求。本文将探讨一种针对iOS平台优化的图片处理流程,涉及图像加载、缓存策略、异步处理以及图形渲染等关键技术点,旨在为iOS应用提供一个低内存消耗、高效率的图片处理解决方案。
|
2月前
|
存储 缓存 安全
基于iOS平台的高效图片缓存策略实现
【4月更文挑战第22天】 在移动应用开发中,图片资源的加载与缓存是影响用户体验的重要因素之一。尤其对于iOS平台,由于设备存储空间的限制以及用户对流畅性的高要求,设计一种合理的图片缓存策略显得尤为关键。本文将探讨在iOS环境下,如何通过使用先进的图片缓存技术,包括内存缓存、磁盘缓存以及网络请求的优化,来提高应用的性能和响应速度。我们将重点分析多级缓存机制的设计与实现,并对可能出现的问题及其解决方案进行讨论。
|
2月前
|
存储 缓存 编解码
实现iOS平台的高效图片缓存策略
【4月更文挑战第23天】在移动应用开发领域,尤其是图像处理密集型的iOS应用中,高效的图片缓存策略对于提升用户体验和节省系统资源至关重要。本文将探讨一种针对iOS平台设计的图片缓存方案,该方案通过结合内存缓存与磁盘缓存的多层次结构,旨在优化图片加载性能并降低内存占用。我们将深入分析其设计理念、核心组件以及在实际场景中的应用效果,同时对比其他常见缓存技术的优势与局限。
|
11月前
|
存储 XML 编解码
探索现代图片格式:从GIF到HEIF,优势与适用场景一览-2
使用场景: JPEG适用于各种需要高度压缩、广泛兼容性以及不需要透明背景的场景。它特别适用于摄影、照片、艺术品等复杂图像的存储和展示。
303 0
|
11月前
|
存储 编解码 算法
探索现代图片格式:从GIF到HEIF,优势与适用场景一览
引言 最近在掘金看到很多动图头像,但都失真了,好奇就研究了下前端各种图片格式
197 0
|
算法 Android开发
聊聊图片压缩的优化
聊聊图片压缩的优化
218 0
聊聊图片压缩的优化
|
JavaScript 前端开发
ImagesQuicklyCompress-图片压缩插件
一款针对javascript开发的图片压缩插件
187 0
|
缓存 Dart 前端开发
AliFlutter图片解决方案与优化
Flutter与Native混合开发将是接下来很长时间的主流开发方式。一套稳定、高效、与官方体系无缝融合的外接图片缓存方案是必不可少的。在AliFlutter系列第三场直播中,由阿里巴巴新零售淘系技术部无线开发专家王乾元为大家介绍AliFlutter提供的适合混合应用的外接图片库方案。首先对Flutter官方原生方案进行了分析,并提出了AliFlutter方案的切入点以及具体优化手段。
3156 0
AliFlutter图片解决方案与优化
|
编解码 测试技术 Android开发
全面掌握移动端主流图片格式的特点、性能、调优等
1、引言 图片通常是移动端应用流量耗费最多的部分,并且占据着重要的视觉空间。以大家最常用的即时通讯IM应用为例,应用中存在大量的图片数据往来(比如图片消息、用户相册、用户头像等等)。
2381 0
|
前端开发 HTML5 移动开发
移动端图片上传旋转、压缩的解决方案
在手机上通过网页 input 标签拍照上传图片,有一些手机会出现图片旋转了90度d的问题,包括 iPhone 和个别三星手机。这些手机竖着拍的时候才会出现这种问题,横拍出来的照片就正常显示。
1249 0