JPEG算法分析与实现
JPEG算法解密
JPEG算法
libjpeg for DCMI
Stm32-Tools-Evaluation/STM32Cube_FW_F4_V1.9.0/Projects/STM32F429I-Discovery/Applications/LibJPEG/
QDBMP (Quick n’ Dirty BMP) is a minimalistic cross-platform C library for handling BMP image files
How To Create A Bitmap Image File By Hand, Without Stencils
How to create bitmap in C ?
如何获取JPEG图片质量和预测压缩图片大小
图解RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32等格式的区别
BMP文件格式详解(BMP file format)
ppm文件
PPM文件格式详解
Python:使用 PIL.Image 将图片从 PPM 格式转为PNG格式
#!/usr/bin/python
# coding=utf-8
import os
import sys
import subprocess
from PIL import Image
#遍历当前文件夹,筛选符合要求的文件,并执行替换重命名
def convert_pic(root_path):
print (root_path)
try:
for root,dir,files in os.walk(root_path):
for file in files:
file_name, file_ext = os.path.splitext(file)
# 判断是否为ppm图片格式
if file_ext!=".ppm":
continue
img = Image.open(root_path+"/"+str(file))
print(root_path+"\\"+str(file))
converted_path=root_path+"/converted_png"
folder = os.path.exists(converted_path)
if not folder:
os.mkdir(converted_path)
#修改文件后缀名为png
file_ext=".png"
newfile_name= file_name+file_ext
img.save(converted_path+'/'+newfile_name)
print("转换成功!")
except Exception as e :
print (e)
print("转换失败!")
#定义主函数,接收命令行参数
def main(argv):
print (argv[0])
convert_pic(".")
subprocess.call("pause",shell=True)#按任意键退出
# convert_pic(".",96,96)
if __name__ == '__main__':
main(sys.argv)
PPM图像格式是由Jef Poskanzer 在1991年所创造的。
PPM(Portable Pixmap Format)还有两位兄长,大哥名叫「PBM」,二哥人称「PGM」,他们三兄弟各有所长,下面为你们一一介绍:
PBM 是位图(bitmap),仅有黑与白,没有灰
PGM 是灰度图(grayscale)
PPM 是通过RGB三种颜色显现的图像(pixmaps)
每个图像文件的开头都通过2个字节「magic number」来表明文件格式的类型(PBM, PGM, PPM),以及编码方式(ASCII 或 Binary),magic number分别为P1、P2、P3、P4、P5、P6。
Magic Number | Type | Encoding |
---|---|---|
P1 | Bitmap | ASCII |
P2 | Graymap | ASCII |
P3 | Pixmap | ASCII |
P4 | Bitmap | Binary |
P5 | Graymap | Binary |
P6 | Pixmap | Binary |
当编码格式为Binary时,像素点的存储采取的是BigEndian,即R存储在低地址,B存储在高地址 |
-
PPM灰度文件
文件头由3行文本组成,可由fgets读出
1)第一行为“P2",表示文件类型
2)第二行为图像的宽度和高度
3)第三行为最大的象素值255
接下来是图像数据块。按行顺序存储。每个象素占4个字节,灰度通道为4字节ASCII码表示的整数,
高字节在前。左上角为坐标原点。 -
16位PPM文件(至少适用于读取由DCRAW生成的PPM文件)
文件头由3行文本组成,可由fgets读出
1)第一行为“P6",表示文件类型
2)第二行为图像的宽度和高度
3)第三行为最大的象素值
接下来是图像数据块。按行顺序存储。每个象素占3个字节,依次为红绿蓝通道,每个通道为1字节整
数。左上角为坐标原点。 -
PPM彩色文件
文件头由3行文本组成,可由fgets读出
1)第一行为“P3",表示文件类型
2)第二行为图像的宽度和高度
3)第三行为最大的象素值255
接下来是图像数据块。按行顺序存储。每个象素占12个字节,依次为红绿蓝通道,每个通道为4字节
ASCII码表示的整数,高字节在前。左上角为坐标原点。
例:给一个16位的ppm文件写文件头
// Write header
//其中width和height中间有一个空格
fprintf(pFile, "P6\n%d %d\n255\n", width, height);
TGA文件
TGA_FileFormat.pdf
TGA文件格式解析
【数据压缩2】TGA格式图片文件分析
.tga图片的文件格式分析