C#之常见图形文件格式及其特点

news/2024/7/8 5:16:43 标签: bmp, jpg, C#, 图像, 图形, png

部分内容来源于Microsoft相关文档!

日常生活中和软件开发中,经常会用到图形文件格式:

  1. BMP

BMP 是 Windows 用来存储与设备无关的图像和与应用程序无关的图像的标准格式。 给定 BMP 文件的每像素位数(1、4、8、15、24、32 或 64)在文件头中指定。 每像素 24 位的 BMP 文件很常见。 BMP 文件通常未压缩,因此不适合通过 Internet 传输

  1. 图形交换格式 (GIF)

GIF 是网页上显示的图像的常用格式。 GIF 适用于线条图、带有纯色块的图片以及颜色之间有清晰边界的图片。 GIF 经过压缩,但在压缩过程中不会丢失任何信息;解压缩后的图像与原始图像完全相同。 可以将 GIF 中的一种颜色指定为透明,以便图像具有显示它的任何网页的背景色。 可以将一系列 GIF 图像存储在单个文件中,以形成动画 GIF。 GIF 每个像素最多存储 8 位,因此它们被限制为 256 种颜色

  1. 联合图像专家组 (JPEG)
    JPEG 是一种压缩方案,适用于扫描的照片等自然场景。 一些信息在压缩过程中丢失,但这种丢失通常是人眼无法察觉的。 JPEG 每个像素存储 24 位,因此它们能够显示超过 1600 万种颜色。 JPEG 不支持透明度或动画。JPEG 图像的压缩级别是可配置的,但压缩级别越高(文件越小),丢失的信息就越多。 20:1 的压缩比通常会生成人眼难以与原始图像区分开来的图像
    JPEG 压缩不适用于线条图、纯色块和清晰边界。 下图显示了一个 BMP 以及两个 JPEG 和一个 GIF。 JPEG 和 GIF 从 BMP 压缩而来。 GIF 的压缩比为 4:1,较小的 JPEG 为 4:1,较大的 JPEG 为 8:3。 请注意,GIF 沿线条保持清晰的边界,但 JPEG 倾向于模糊边界。
    png" alt="在这里插入图片描述" />
    JPEG 是一种压缩方案,而不是文件格式。 JPEG 文件交换格式 (JFIF) 是一种文件格式,通常用于存储和传输根据 JPEG 方案压缩的图像。 Web 浏览器显示的 JFIF 文件使用 .jpg 扩展名。
  2. 可交换图像文件 (EXIF)

EXIF 是一种文件格式,用于数码相机拍摄的照片。 EXIF 文件包含根据 JPEG 规范压缩的图像。 EXIF 文件还包含有关照片的信息(拍摄日期、快门速度、曝光时间等)和有关相机的信息(制造商、型号等)

  1. 可移植网络图形 (PNG)

PNG 格式保留了 GIF 格式的许多优点,但也提供了 GIF 没有的功能。 与 GIF 文件一样,PNG 文件在压缩时不会丢失信息。 PNG 文件可以存储每像素 8、24 或 48 位的颜色和每像素 1、2、4、8 或 16 位的灰度。 相比之下,GIF 文件每像素只能使用 1、2、4 或 8 位。 PNG 文件还可以为每个像素存储一个 Alpha 值,该值指定该像素的颜色与背景色混合的程度,所以在相同分辨率的情况下,png的文件比jpg大很多。
PNG 在 GIF 的基础上改进了其渐进式显示图像的能力(即,在图像通过网络连接到达时显示越来越好的近似图像)。 PNG 文件可以包含 gamma 矫正和颜色校正信息,以便在各种显示设备上准确呈现图像

  1. 标记图像文件格式 (TIFF)

TIFF 是一种灵活且可扩展的格式,受到各种平台和图像处理应用程序的支持。 TIFF 文件可以存储每像素任意位数的图像,并且可以采用多种压缩算法。 可以将多个图像存储在一个多页的 TIFF 文件中。 与图像相关的信息(扫描仪制造商、主机、压缩类型、方向、每像素样本数等)可以存储在文件中,并使用标记进行排列。 可以通过批准和添加新标记,按需扩展 TIFF 格式。


http://www.niftyadmin.cn/n/5086951.html

相关文章

@Mapper与@MapperScan注解

Mapper Mapper Mapper.xml文件 作用在dao(mapper)层上的一个注解,将接口生成一个动态代理类,有了这个注解就不用 再写Mapper.xml文件 如果缺少这个注解,运行项目就会报相应的错误 Field userMapper in com.example…

4.0 Beta2版本编译RK3588错误问题解决

最近有小伙伴在问4.0 Beta2版本编译RK3588(也就是dayu210)时,会有各种莫名奇妙的报错 (1)subsystem name config incorrect in ....... 这个原因是OH代码加入了编译检查,临时措施是把需要编译检查的文件放…

flink1.15 savepoint 超时报错 java.util.concurrent.TimeoutException

savepoint命令 flink savepoint e04813d4e7480c526912eb4d32bba510 hdfs://flink/flink/migration/savepoint56650 -Dyarn.application.id=application_1683808492336_1222报错内容 org.apache.flink.util.FlinkException: Triggering a savepoint for the job e04813d4e7480…

opencv 图像识别 指纹识别 - python 计算机竞赛

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器视觉的指纹识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖,适…

计算机毕业设计 大学生选修选课系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

Linux:【Kafka四】集群介绍与单机搭建

目录 环境简介 一、搭建kafka集群 1.1、复制出两个kafka的配置文件 1.2、修改配置文件中的如下属性 二、启动kafka集群 三、可校验kafka三个节点是否均启动成功 四、查看集群中主题的分区和副本 4.1、新建一个包含了分区和副本的主题 4.2、查看该主题的详细信息 五、…

C/C++ C语言 C++语言 当一个文件会和很多个编译单元一起编译时,而这个文件又引用了某些编译单元内独有的函数、全局变量,怎么办?

解决方案如下图,在独有的编译单元内使用 #define,在这个文件内使用 #ifdef (这种方式是错误的,#define 一般只会在当前文件起作用) 另外一个方案是,在这个 ”会被很多个编译单元链接“ 的文件里定义全局变…

sylar高性能服务器-日志(P7-P8)代码解析

文章目录 p71.TabFormatItem2.init函数,对于{}内容的解析3.Util.h4.CmakeLists5.优化日志输出-流式输出 p81.优化日志输出-格式化输出2.日志管理器3.单例模型设计 测试(无调试步骤) P7P8两节视频新增内容不多,主要看下优化日志输出使用的宏函数。本次记录…