笔者近期在将 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);