这十天都在做将二进制文件压缩成jpeg图片并保存到本地的事,从二进制文件的读取、文件头信息的提取,到libjpeg库的使用。事情虽小,但涉及到的知识却很多,有必要记录一番。

TIMG二进制文件

TIMG文件以二进制数据形式存储,二进制形式读取,文件空间有文件头+图像数据块组成。文件头包含了文件的基本信息,如:文件名,图片宽度,高度,是否包含tip图数据等等。TIMG文件中使用结构体的方式定义了文件的基本信息,结构体变量名st_head
利用结构体中的数据提取图像数据块。

文件的读取和文件头的提取

C++使用fstream流的方法读取文件,其中ifstram将文件从硬盘读到内存,ofstream将文件从内存读到硬盘。二进制文件的读使用到read(char * buffer,streamsize size)//从文件中读取size个字符到buffer中。这里size设置成sizeof(st_head),buffer为st_head定义的一个结构体变量S,文件头的信息就存储到S中。

Libjpeg库的使用

jpeg是一种图片格式,具体内容十分复杂,不过可以使用libjpeg进行jpeg图像的压缩。libjpeg库是开源代码,在VS上使用需要用到vs的command,命令语句nmake生成相应的lib,具体可看源码中的install.txt。jpeg图像的压缩要求数据块是以RGBRGB的形式排列的矩阵数组。图片的width和height是压缩图像的重要参数。

   while(cinfo.next_scanline < cinfo.image_height){row_pointer[0] = &src_data[cinfo.next_scanline * row_stride];                                                                jpeg_write_scanlines(&cinfo,row_pointer,1);}

row_stride = image_width * 3,next_scanline是一个自增的变量,每写一行就加1。src_data是读取出来的数据块,

cinfo.next_scanline * row_stride
表示jpeg图片每行数据要写入的元素个数和起始地址。

TIMG二进制文件转JPEG图片的方法相关推荐

  1. 将png、JPEG图片转为eps格式的两种方法

    方法一: 在线转换工具: CloudConvert 使用并验证过,转换后可以正常使用 方法二:python实现 from PIL import Imagedef convert_to_eps(inpu ...

  2. 《使用第三方库来显示jpeg图片》

    <使用第三方库来显示jpeg图片> ---------------------------------------------------------------------------- ...

  3. 如何将PDF转换成JPEG图片?

    ▌01 将PDF转换成JPEG 1.为什么转换? 有的时候需要将PDF文件转换成对应的JPEG文件嵌入在某些文档中,比如对应的PowerPoint,CSDN网页中.这方面的需求如同 使用 python ...

  4. android Bimtap 各种图片处理方法、图片特效

    原帖地址:http://gundumw100.iteye.com/blog/849729 Java代码   //压缩图片大小 public static Bitmap compressImage(Bi ...

  5. php 抓取页面图片,php 抓取网页内容与图片的方法

    这篇文章主要介绍了关于php 抓取网页内容与图片的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 例子1:<?php include_once("curl.php& ...

  6. java如何把png转换成jpg_Java实现将png格式图片转换成jpg格式图片的方法【测试可用】...

    Java实现将png格式图片转换成jpg格式图片的方法[测试可用] 发布于 2020-4-9| 复制链接 摘记: 本文实例讲述了Java实现将png格式图片转换成jpg格式图片的方法.分享给大家供大家 ...

  7. mysql图片_往MySQL中存储图片的方法

    1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况.一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦.但有些时候,向MySQL ...

  8. Android应用开发中三种常见的图片压缩方法

    Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 一.质量压缩法private Bitmap comp ...

  9. java image to base64_Java实现base64图片编码数据转换为本地图片的方法

    本文实例讲述了Java实现base64图片编码数据转换为本地图片的方法.分享给大家供大家参考,具体如下: 项目中用到的把base64图片数据转为本地图片的函数 /** * 替换html中的base64 ...

最新文章

  1. 再见 Python,Hello Julia!
  2. 语音信号的分帧加窗的matlab实现
  3. oracle truncate 日期,【Oracle】truncate和delete区别
  4. yum安装nginx,并配置静态资源服务器
  5. poj2240 Floyd
  6. 夜弦网页游戏专用浏览器(支持最小化隐藏后台多开挂机)
  7. 1 搭建Flash游戏开发环境
  8. java调阿里云短信接口
  9. 2022年全球程序员薪资排行出炉:中国倒数第九,GO最赚钱
  10. 无线路由器pppoe服务器,详解Volans飞鱼星路由器怎么设置PPPOE服务器
  11. excel 添加换行符,去除换行符:
  12. Pandas---条件筛选与组合筛选
  13. 空间数据库之矢量数据上载方法
  14. Windows7系统服务详解
  15. Terraform学习2
  16. HTML5+CSS大作业——简单的程序员个人博客(7页) 大学个人博客网页制作教程 表格布局网页模板
  17. 计算机系统最大的加速能力,w7系统优化加速到最大性能
  18. 软件测试之安全怎么做?
  19. 不要陷入「完美主义者」的陷阱,你必须填的坑
  20. Windows 安装 JDK 与环境变量配置

热门文章

  1. 上市公司“掘金”大数据 多领域大数据应用受热捧
  2. CSS | 如何达到监听页面滚动的效果?
  3. 【计算机视觉】深度相机(八)--OpenNI及与Kinect for windows SDK的比较
  4. 天地人“三界传说”官网基础效果(适合各分辨率页面)
  5. 在QTCreator中保存某个文件出现:保存文件时发生错误:无法写入文件D:\test\test.h.磁盘已满?
  6. 10个我经常逛的“小网站”,嘿嘿嘿
  7. lstm需要优化的参数_通过Keras 构建基于 LSTM 模型的故事生成器
  8. C++超市商品管理系统设计最新版
  9. 【Aminer论文精读训练营】Aminer第二期推荐的5篇论文
  10. C++游戏天堂——经典型(2)