#!/usr/bin/env perl use Data::Dumper; my $x = 1000; my $y = 1000; my $done=0; my $fl; my $m; sub foo($) { my $l = shift; my $ov = $fl->[9]; my $oh = $fl->[10]; my $v = $l->[9]; my $h = $l->[10]; $x++; if ( ( $oh eq '1' ) and ( $h eq '0' ) ) { $x = 0; $y++; $y = 0 if $v eq '0'; } if (($ov eq '1') and ($v eq'0')) { $done++; } if ( ( $x < 1000 ) and ( $y < 1000 ) ) { my $p = ord( pack( 'b8', join( "", @$l[ 1 .. 8 ] ) ) ); my $lx = $x - 190; my $ly = $y - 22; if ( ( $ly >= 0 ) && ( $ly < 384 ) ) { if ( ( $lx >= 0 ) && ( $lx < 640 ) ) { $m->[ ( $ly * 640 ) + $lx ] = $p; } } } $fl = $l; } open FISH, '<', 'in.csv'; my ( $l, $ol ); ; ; ; ; ; while ($done!=3) { my $e=; chomp $e; chomp $e; chop $e; $l = [ split /,/, $e ]; if ( ( $ol->[12] eq '1' ) and ( $l->[12] eq '0' ) ) { foo($l); } $ol = $l; } close FISH; print "P3\n"; print "316 480\n"; #print "632 480\n"; #print "1272 480\n"; print "255\n"; sub pixel($) { my $p=shift; if ($p & 1) { print "255 "; } else { print "0 "; } if ($p & 2) { print "255 "; } else { print "0 "; } if ($p & 0xfc) { print "255 "; } else { print "0 "; } } my $o = 0; for ( $y = 0 ; $y < 960; $y++ ) { for ( $x = 0 ; $x < 316 ; $x++ ) { my $v=int( $m->[$o] ); pixel($v); print "\n"; $o++; } if (($y %2) =='1') { $o++; $o++; $o++; $o++; } }