you're right that's needed. for offline development i use the XAMPP distribution of apache server, php, which includes GD and other support by default. online you have to check or ask if your host has it installed also, for the generation i load source images into an array. my source images, doodles, are in the folders http://noemata.net/time().mt_rand/larding-data/goy/ http://noemata.net/time().mt_rand/larding-data/goy2/ http://noemata.net/time().mt_rand/larding-data/goy3/ (they are b/w renderings of http://noemata.net/germinal/ ) - bjørn
On Tue, Jan 26, 2010 at 12:07 PM, dave miller <[email protected]> wrote: > to make this work do you ned to have GD library installed in php? > dave > > 2010/1/26 Bjørn Magnhildøen <[email protected]> >> >> it's mostly done by iterations of superimposing b/w images with a >> transparent background. >> see core code below. i'm using php so the generation is also done >> online, as 'larding' - line-stretching. some effects come from php's >> inability to handle transparent images, ie. i have to use some >> imagefill function ('paint bucket') to fill it with a transparent >> color, which has the effect also of erasing lines (if you hit fill on >> the wrong pixel, black instead of white) as seen clearly in the more >> complex drawings, which has up to thousand iterations. >> i'll put the code in the gallery somewhere. >> >> <?php >> /* >> $new_image = image resource identifier such as returned by >> imagecreatetruecolor(). must be passed by reference >> $image_source = image resource identifier returned by >> imagecreatefromjpeg, imagecreatefromgif and imagecreatefrompng. must >> be passed by reference >> */ >> function setTransparency($new_image,$image_source) >> { >> global $im, $im2; >> >> $transparencyIndex = imagecolortransparent($image_source); >> $transparencyColor = array('red' => 255, 'green' => 255, >> 'blue' => 255); >> >> if ($transparencyIndex >= 0) { >> $transparencyColor = >> imagecolorsforindex($image_source, $transparencyIndex); >> } >> >> $transparencyIndex = imagecolorallocate($new_image, >> $transparencyColor['red'], $transparencyColor['green'], >> $transparencyColor['blue']); >> imagefill($new_image, 0, 0, $transparencyIndex); >> imagecolortransparent($new_image, $transparencyIndex); >> >> } >> >> function myimagefill($im, $x, $y, $color) { >> while ($i++ < 100 and $j < 10) { >> $x2 = mt_rand(0,$x); >> $y2 = mt_rand(0,$y); >> $rgb = imagecolorat($im, $x2, $y2); >> $r = ($rgb >> 16) & 0xFF; >> $g = ($rgb >> 8) & 0xFF; >> $b = $rgb & 0xFF; >> // if ($r == 0 and $g == 0 and $b == 2) { >> imagefill($im, $x2, $y2, $color); >> // $j++; >> // } >> } >> return $im; >> } >> >> function myprocess() { >> global $im, $im2, $png, $i, $x, $y; >> $cf = trim($png[mt_rand(0,sizeof($png)-1)]); >> $im2 = imagecreatefrompng($cf); >> $white = imagecolorallocate($im2, 255, 255, 255); >> imagecolortransparent($im2, $white); >> $im2size = getimagesize($cf); >> $x2 = $im2size[0]; >> $y2 = $im2size[1]; >> if ($x2 < 150 or $y2 < 150) return; >> $x3 = mt_rand(0,$x+$x2); >> $y3 = mt_rand(0,$y+$y2); >> $x4 = $x3 - $x2; >> $y4 = $y3 - $y2; >> imagefill($im2, 0, 0, $white); >> $im2 = myimagefill($im2, $x2, $y2, $white); >> imagecolortransparent($im2, $white); >> setTransparency($im2, $im); //original >> imagecopymerge($im, $im2, $x4, $y4, 0, 0, $x2, $y2, 100); >> imagedestroy($im2); >> } >> >> function makepng() { >> global $i, $im,$x,$y,$loops,$navn,$png; >> $im = imagecreatetruecolor($x,$y); >> $white = imagecolorallocate($im, 255, 255, 255); >> imagecolortransparent($im, $white); >> for ($i=0;$i<=$loops;$i++) { >> myprocess(); >> imagecolortransparent($im, $white); >> } >> $navn = "larding-data/tmp.png"; >> imagepng($im, $navn); >> imagedestroy($im); >> } >> ?> >> >> On Tue, Jan 26, 2010 at 11:16 AM, Pall Thayer <[email protected]> wrote: >> > You should post the scripts somewhere. >> > >> > Pall >> > >> > 2010/1/26 Bjørn Magnhildøen <[email protected]>: >> >> the material is originally hand scribbled, and then processed through >> >> scripts. >> >> i wanted to code a doodle machine in the beginning but couldn't get it >> >> to do anything interesting (in my view), so i tried doing it via real >> >> doodles instead and building up from those as patterns. >> >> thanks, bjørn >> >> >> >> On Tue, Jan 26, 2010 at 10:45 AM, dave miller >> >> <[email protected]> wrote: >> >>> these are great - are the drawings generated by code? or hand >> >>> scribbled? >> >>> dave >> >>> >> >>> 2010/1/26 <[email protected]> >> >>>> >> >>>> http://noemata.net/time().mt_rand/ >> >>>> _______________________________________________ >> >>>> NetBehaviour mailing list >> >>>> [email protected] >> >>>> http://www.netbehaviour.org/mailman/listinfo/netbehaviour >> >>> >> >>> >> >>> _______________________________________________ >> >>> NetBehaviour mailing list >> >>> [email protected] >> >>> http://www.netbehaviour.org/mailman/listinfo/netbehaviour >> >>> >> >> _______________________________________________ >> >> NetBehaviour mailing list >> >> [email protected] >> >> http://www.netbehaviour.org/mailman/listinfo/netbehaviour >> >> >> > >> > >> > >> > -- >> > ***************************** >> > Pall Thayer >> > artist >> > http://www.this.is/pallit >> > ***************************** >> > _______________________________________________ >> > NetBehaviour mailing list >> > [email protected] >> > http://www.netbehaviour.org/mailman/listinfo/netbehaviour >> > >> _______________________________________________ >> NetBehaviour mailing list >> [email protected] >> http://www.netbehaviour.org/mailman/listinfo/netbehaviour > > > > _______________________________________________ > NetBehaviour mailing list > [email protected] > http://www.netbehaviour.org/mailman/listinfo/netbehaviour > _______________________________________________ NetBehaviour mailing list [email protected] http://www.netbehaviour.org/mailman/listinfo/netbehaviour
