笔者近期在将bmp图像格式图像转为raw过程中遇到了一些问题,主要是fwrite在写入矩阵时的元素顺序问题。要想保证存储后的raw图像能够正常的用ps打开,需要将元素按正确的顺序存储。
Matlab中fwrite在写入矩阵时是列优先的,也就是先写入第1列,再第2列,以此类推,一直到写入完毕,所以直接将图像矩阵写入.raw文件会导致ps打开后图像不对。在写入时应将图像矩阵的转置写入.raw文件,这样就对了。
[img, map] = imread('test.bmp'); % 读取图像
fid = fopen('test.raw', 'wb'); % 存为raw
fwrite(fid, img', 'uint8'); % 注意将img转置
fclose(fid);