Я нашел проблему - это было в моей программе на C ...
Я выделил память для массива long и использовал fread () для чтения данных:
#define PPR 2048;
#define BPP 2;
long *pix;
pix=malloc(PPR*PPR*sizeof(long));
fread(pix,BPP,PPR*PPR,in);
Но поскольку данные поступают в виде 2-байтовых блоков (BPP = 2), а sizeof (long) = 4, fread () плотно упаковывает данные в выделенную память, а не упаковывает их в пакеты большого размера. Таким образом, я получаю два ряда, упакованных в одну, а вторая половина картинки пуста.
Я изменил его, чтобы зациклить количество пикселей, каждый раз читать два байта и вместо этого сохранять их в выделенной памяти:
for (m=0;m<PPR*PPR;m++) {
b1=fgetc(in);
b2=fgetc(in);
*(pix+m)=256*b1+b2;
}