Anonymous

User talk:BytePilot: Difference between revisions

From London Hackspace Wiki
no edit summary
No edit summary
No edit summary
Line 162: Line 162:


If we wanted to get the same resolution we'd need to pick out 256 shades of grey to laser, or better still hack the laser software to allow us to control the burn strength per pixel.
If we wanted to get the same resolution we'd need to pick out 256 shades of grey to laser, or better still hack the laser software to allow us to control the burn strength per pixel.
Below is another example. It generates N times a B&W bitmap. Each is then fed to the laser and overlaid. So the darkest point gets N shots; the lightest just one or two. Note the log/lin mappings - which sort of do not apply to all materials!
<pre>
#!/usr/bin/perl
use GD;
# Number of successive burns
#
my $N = 4;
die "Syntax: $0 <image.png>"
unless $#ARGV==0;
my ($file) = @ARGV;
$in = GD::Image->new($file)
or die "Could not load '$file': $!\n";
$gray = new GD::Image($in->width, $in->height);
my @lin=();
map { $lin[$_] = $gray->colorAllocate($_,$_,$_); } (0 .. 255); ## linear - not eye or laser.
map {
        # calculate a cutoff point on an exp. scale. as this is what the burn
        # intensity versus grayness sort of is.
        #
push @coff,int(10 ** log($_)/log($N) + 0.5);
        # create output layer
my $layer = GD::Image->newPalette($gray->width, $gray->height);
$layer->colorAllocate(255,255,255) == 0 or die $.;
$layer->colorAllocate(0,0,0) == 1 or die $.;
push @out,$layer;
} (1 .. $N);
my @histogram = ();
for(my $x = 0; $x < $gray->width; $x++) {
for(my $y = 0; $y < $gray->height; $y++) {
my ($r,$g,$b) = $in->rgb($in->getPixel($x,$y));
# my $val = $g;
my $val = int((2*$r + 4*$g + $b)/7 + 0.5);
for(my $i = 0; $i < $N; $i++) {
$gray->setPixel($x,$y,$lin[ $val ]);
next unless $val > $coff[$i];
$out[$i]->setPixel($x,$y,1);
$histogram[$i]++;
};
};
};
map {
print "Layer $_\t$histogram[$_]\n";
} (0 .. $N-1);
open(FH,">gray.png") or die $!; print FH $gray->png; close(FH);
for(my $i = 0; $i < $N; $i++) {
open(FH,">layer_$i.png") or die $!;
print FH $out[$i]->png;
close(FH);
};
exit 0;
use SNMP;
&SNMP::initMib();
foreach my $oid (keys(%SNMP::MIB)) {
print "OID=", $oid, "\n";
        print "\tTYPE=", $SNMP::MIB{$oid}{'type'},
"\n\tLABEL=",$SNMP::MIB{$oid}{'label'}, "\n";
        print "\tDESCRIPTION=", $SNMP::MIB{$oid}{'description'}, "\n";
    }
</pre>
63

edits