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

Reply via email to