I remember, sometime after I turn twenty-four, getting up in the morning started to become a painful experience. I'd awake from the couch in my studio and some muscle of mine, or tendon or hand, foot or something - most likely more than one thing, would hurt. I'd get a cramp here or there or just feel shitty all over. "No way is this what the future holds for me"
But, yes, that's what it does hold. Every year seems to bring just a little more incurable, life-long pain.
I also seem to remember, that I was a whole lot smarter when I was around nineteen or so, than as I am now. This is an imperfect comparison, obviously, but I know for sure that my short term memory is shit. Watching me attempt to leave my apartment would have you believe that I am obsessive compulsive, having to look here and there and touch this or that, before I embark - but what I'm really doing, what my silly dance is actually all about, is just the constant search for where I put my keys. And my wallet. And my bike lock. And my gloves. And about a half dozen other items that I find I require before embarking to go outside.
It would make sense to just put all these items in one place, but I'm stupid enough to forget to do even that, so I'm left to forever do this stupid little "I want to leave" ritual.
I'm not even out of my twenties and I'm complaining about this. I now see, or at least have a glimmer - which I'm sure will fade as I, as well, forget how to feel this way, how one changes when one gets older. Even my relationship with alcohol has changed, even from six months ago:
What was never a real interesting thing for me, now, really seems like a good solution for many a problem: being depressed, being angry, being stupid, being heart-broken, being bored - hell, anything really. It's not as if I never drank because of these things, but now, boy howdy, it's the first thing I think of. And that's pretty scary.
Side stepping the substance abuse issue, I may see how it could be possible that I, one day, may have children: One day, I'll just wake up, and, "It'll make sense." Somehow. I can't tell you know, because right now, it doesn't make any sense.
But, one day, I'll change, and forget how it used to feel like, before. It's sad, almost, to think you have no real choice on the matter, that you just change away and then, die.
So, now as I write, I realize I didn't really want to get into any of this - about how we're all just brightly lit lightbulbs whose filaments are slowly decaying, but wanted to tell you how I figured out how to make an image into a halftone and I wanted to do that by going back in time, all mysterious-like and show how I used to be a little smart ass and now, I'm just an old poop. I'm not even thirty, by the way.
It's strange to think, but one of my favorite and most important classes in high school was actually, "Communications Technology". So much, in fact, that I won a scholarship by writing an essay about how, once the Internet basically functioned as TV, but better, the bacon would really sizzle - and hey, I turned out to be completely correct on that. I had to tell them that I was going to be a Communications major, which was false and when I did get the scholarship, they just cut me a check. So, naturally, I cashed it, went on a camping trip and spent the rest on books and CD's - strangely enough, some of those books and CD's are still some of my favorites. Velvet Underground and Nico, anyone? Life-Changing.
I didn't really win the scholarship because it was a good essay - I'm sure that the essay actually pissed off whoever read it, since it was being given out by the local cable company and if they weren't pissing themselves over the idea of, user generated, always available content, without even an inkling of a model for making money then, they certainly must be now. I won that scholarship, because I was the only one that entered it in my school. And my communications technology class had as much to do with a Communications major, as the Metaphysics section at your local big box book store has with Metaphysics in Philosophy.
But what my communications technology class had was a liberal teacher that could still keep us all in line, a darkroom, an AB Dick 1 offset printer, a process camera and tons,
and tons of Macintosh computers.
Our end-of-year project in my junior year of high school was to produce a year-long calendar. Each student got one month and we all collaborated on a cover. Easy enough - and what most people did was take an image, print it out, shoot it on the process camera and print it out on the offset printer.
Looking back now around 11 years from then, it's pretty funny to think that teaching us what a Process Camera is and how to make plates for an Offset Printer would somehow play a major role in ours lives - I think my teacher did quote that we could, after this class, start working at a print shop ourselves... maybe I'm making that up...
But what I'm getting at is, no one now uses a process camera and I don't know anyone that has an offset printer, except perhaps Rick, who's seems more interested in his two, "New Style" (and over 100 years old) Letterpress printers (and I know at least one other person in town with some of those as well). Every day, I hear of another printing house in town going down in flames, usually with millions of dollars owed to its suppliers.
So, last week, I thought it would be wild, since I just, live on the edge to make my own photograph-to-halftone imaging application. The ubiquitous Photoshop does a good job when you Convert to Bitmap..., but it does a really bad job when you use the filter supplied. Why? The filter is sort of an approximation, but the bitmap command is sort of a faux RIP. What I was going for, was the latter style, so that I could make, say a little web-app to make halftone images. Again, I live on the wild side of things, clearly.
My first stumbling block on all this is the technology originally created to make halftones doesn't exist in any real sense, since no one uses process cameras, I have no idea what the actual screen you use to make a halftone looks like, so I can't emulate it, using some nerd code.
My lazy web research yielded little results, since, like many things, if it's not a technology that's born while the internet was around, it's really off its radar and there's not a weird hobby/craft, "process camera halftone imaging" group around, most likely because process cameras can weigh several hundred pounds and take an entire room, if not be built into a room. And they cost thousands.
I didn't even try to look in the library, since I don't even know what type of book will give you a how-to on making this stuff and my guess is that such books have been purged from the library, since they weren't really circulating.
I think it's funny that this sort of technology - so important for creating images in the past one hundred years is plenty hard to get a grasp on, technologically in the present.
And I sit in my studio and I look at my screen prints, with their halftone designs on and I feel like a total fake. I don't even know how the image I'm emulating is emulated, nor do I know what the real way is. I'm pretty sure I'm fairly alone in having such existential dilemmas over a simple image filter.
So, I'm sitting at my home computer in 11th grade, which was an absolute and complete surprise to have, as my family wasn't the most well-to-do or technologically leaning, working on my month's design. I decided to have it skateboard-themed and commemorate Danny Way's record breaking backside air. Oh yes:
Now, I want you to forget about the horrible all-centered composition and bad typography choices and look at some tricked out things going on:
-
The giant knock-out of Danny Way, front and center. Talk about a few hours in quick mask
-
The frame-by-frame photo montage in the upper left hand corner, directly ripped from a VHS video tape - I can't even remember how I got this on my computer, but it flipped out my teacher, I think.
-
The secret, "Where's Waldo?", Waldo guy, hidden in the whole image
I remember working on this image at like 600 dpi and every change I made would give me the status bar of DEATH, waiting for it to make each change. I also remember finally bringing the whole composition to school on like a Zip disk and having the Mac at the lab fail to open it, because it was too big. Oh halcyon days!
But what I really remember futzing with for hours and going through reams of paper was the halftone.
I forget what the teacher told us to do, but I figured out that if you have a high DPI image, you could output it to hella-high quality that would still be compatible when shooting with the process camera onto the photographic plate and still, still worked when run through our little offset printer.
Here's a close up:
I just remember being on top of the King of the Dorks mountain when you couldn't even see the halftones in my calendar top, unless you looked reeeeeally closely. I don't think anyone else gave a damn, but I think halftones and I started something a little bit more than casual. Sadly, about a day after that, I discovered that I had a copy of Front Page Express on my computer and that was the beginning of web stuff.
So... emulating halftones.
I had a sneaking suspicion that this problem may be very difficult - I mean, hey! it's something that's built into Photoshop - sounds like hard stuff.
I kept running into dead ends, until I found a paper about texture shading in Open GL - 3D games, basically about using the halftone system to efficiently change textures and... and stuff.
http://isgwww.cs.uni-magdeburg.de/graphik/pub/files/Freudenberg_2002_RTH.pdf
Quote:
The basic ingredient in halftoning that determines the visual appearance most is the halftone screen. This is a gray-scale texture containing threshold values. To create a halftoned image from a given input image, the intensity of each pixel is compared to the corresponding threshold value in the halftone screen, and a black or white pixel is written depending on the outcome of the comparison (see Figure 1). If H is the halftone screen threshold value and L is the target intensity, we could write the threshold function in a C-like fashion as
H > (1-L) ? 1 : 0.Here, (1-L) represents "darkness" which reflects the subtractive color model of ink on paper.
Right. I'll take your word on that. It goes on:
So to make real-time halftoning work, we need a halftone screen texture, and a function to perform the threshold operation. The halftone texture specifies how the image intensity should be mapped into a black-and-white rendering.
And then! Then, it finally shows a picture:
Halftone screen + Lighting Intensity = Result.
Halftone screen + Lighting Intensity = Result.
Halftone screen + Lighting Intensity = Result.
I must have looked at that diagram for hours going, "I don't... understand."
I took bike rides. I sipped on coffee. I did anything but type something out on my computer to make that happen.
And then, I thought - the hell with it all, I'll ninja program this and in 15 minutes, whipped up a little program:
#!/usr/bin/perl
use strict;
package Halftone;
use GD;
use Mouse;
has 'image' => (isa => 'Str', is => 'rw', required => 1);
has 'width' => (isa => 'Int', is => 'rw', required => 0, default => 600);
has 'height' => (isa => 'Int', is => 'rw', required => 0, default => 800);
has 'screen' => (isa => 'Str', is => 'rw', required => 0, default => 'halftone_screen.gif');
sub transform {
my $self = shift;
my $orig_img = GD::Image->new($self->image);
my $scr_img = GD::Image->new($self->screen);
my $trans_img = GD::Image->new( $orig_img->width, $orig_img->height);
my $white = $trans_img->colorAllocate( 255, 255, 255 );
my $black = $trans_img->colorAllocate( 0, 0, 0 );
my $w = $orig_img->width;
my $h = $orig_img->height;
my $x = 0;
for($x = 0; $x <= $w; $x++){
my $y = 0;
for($y = 0; $y <= $h; $y++){
my $img_index = $orig_img->getPixel( $x, $y );
my ( $or, $og, $ob ) = $orig_img->rgb($img_index);
my $orig_thresh = (($or + $og + $ob) / 3 / 2.55);
my $scr_index = $scr_img->getPixel( $x, $y );
my ( $sr, $sg, $sb ) = $scr_img->rgb($scr_index);
my $scr_thresh = (($sr + $sg + $sb) / 3 / 2.55);
if($scr_thresh >= $orig_thresh){
$trans_img->setPixel( $x, $y, $black );
}
else {
$trans_img->setPixel( $x, $y, $white );
}
}
}
return $trans_img;
}
1;
package main;
use Halftone;
my $ht = Halftone->new(
image => 'image.gif',
);
my $new_img = $ht->transform;
open my $foo, ">", "ht.gif" or die $!;
print $foo $new_img->gif or die $!;
close $foo;
(Or, something like that)
Then, I made a halftone screen,
Gave the program an image:
And got this as a result:

"My Dog," I thought, "I did it. That was EASY!"
It's actually quite magic - all it does is it looks at each and every pixel of the halftone screen - what we're using to emulate the effects that light had on a real, physical halftone screen and compares it to the pixel of our source image -
If the source image is more, "intense" - it's brighter, farther away from black than the halftone screen, we put a white pixel in that same place in a new image. If not? A black pixel. And we do that for every single pixel.
That's. It.
So, that's fun and all but what I want to do is make fancy halftone images, not make chunky bands of black and white. Would this same idea work for a complex image and a complex halftone screen?
Ran into a problem, since I didn't know what to use for, "A Complex Halftone Screen"
I finally found an itty-bitty image on a web page that hadn't been updated in 4+ years that said, "Traditional Contact Screen" and showed, what looked like, some bad faux 3d balls -the kind you used to use for "Bump Maps" in Photoshop:
So... I took that image of what looks like a bunch of faux 3D balls, and made a whole slew of them, like so for my halftone screen:
Got a new source image:
And, ran it through the program again. And look what happened: