program imagereader implicit none integer, parameter :: maxsize=1000 integer, parameter :: maxchar=80 integer, dimension(maxsize,maxsize) :: image1 integer, dimension(maxsize,maxsize) :: image2 integer, dimension(100000) :: pixarray, newpixarray character(maxchar) :: line ! this is a string, with "dimension" ! it's a char array integer :: rows, cols integer :: row, col, mycol integer :: maxpixel integer :: newline, diff integer :: totalpix, totallines ! this version: pixperline=1 ! save as pgm with gimp, ! automatically has one pixel per line integer :: linenum,i, start integer time_array_0(8), time_array_1(8) real start_time, finish_time open(10, file='ISS-four.pgm') open(20, file='figtest.pgm') read(10,*) line ! format line read(10,*) line ! comment line read(10,*) cols, rows read(10,*) maxpixel write(*,*) 'Rows=', rows, "Cols=", cols, "Max pixel value=", maxpixel totallines = rows*cols write(*,*) "Totallines=", totallines do row=1,rows do col=1,cols read(10,*) image1(row,col) end do end do write(*,*) 'Starting image processing...' call date_and_time(values=time_array_0) start_time = time_array_0 (5) * 3600 + time_array_0 (6) * 60 & + time_array_0 (7) + 0.001 * time_array_0 (8) write (6, '(8x, 1a, 1f16.6)') 'begin (date_and_time): ', & start_time do row=1,rows do col=1,cols ! image2(row,col)= image1(row,col)/3 !int(sqrt(real(image1(row,col)))) image2(row,col)= image1(row,col) * 1.5 if (image2(row,col) > 255) then image2(row,col) = 255 end if end do end do call date_and_time(values=time_array_1) finish_time = time_array_1 (5) * 3600 + time_array_1 (6) * 60 & + time_array_1 (7) + 0.001 * time_array_1 (8) write(*,*) 'End image processing' write (6, '(8x, 1a, 1f16.6)') 'end (date_and_time): ', & finish_time write(*,*) 'Total time=', finish_time - start_time write(20,*) "P2" write(20,*) "# Test file" write(20,*) cols,rows write(20,*) maxpixel do row = 1, rows do col = 1, cols write(20,*) image2(row,col) end do end do close(20) end program