Improve digital print quality

Here’s a tip for a beginner: If you are printing a digital picture. I cannot stress this enough. Make sure you do the following:

Open the picture in Photoshop (or similar product)
Change the DPI (dots per inch) to at least 250+ (in photoshop click Image -> Image Size -> In the DPI text box type: 250 and finally uncheck Resample image). This will drastically improve quality of your digital prints.

Adobe RGB
For a little advanced beginners you should move the color space from sRGB to Adobe RGB (1998). In order to get the real use from this however, your camera must be able to store images in Adobe RGB (1998). In Canon 10D for instance you can set the color-space to be Adobe RGB (although this does not append the ICC profile to the image itself, you can open it with Photoshop and ask Photoshop to append the Adobe RGB (1998) ICC profile).

The reason for this being the Adobe RGB (1998) color space has a much wider gamut (range of colors it’s capable of reproducing from the color-spectrum) compared to sRGB.

Note however, if you store images as Adobe RGB and decide to post them on the web (which works with sRGB) — the picture will appear to have low chroma (or low saturation). However if you are printing the picture through: Adorama, Bel-Air, Yahoo! Photos (all of which support Adobe RGB color-space) then the images will appear and truly breath-taking.

16 bits/channel editing
Why is this so important? Well as it turns out 8 bits or 2^8 = 256 combinations per channel isn’t enough. Some digital cameras are able to store (and needs to store) more details per channel (channel = R=red, B=blue, G=green) in order to reproduce true colors. Now when you do levels, curves, color-balance and so on everytime (at least during the first time) you loose a lot of detail from the picture.

To understand the problem open an 8 bits/channel picture in Photoshop click Image->Adjust->Levels you will see, white stripes (or sometimes referred to sheeps tails) in the levels histogram. This is because there are more details but the levels dialog due to 8 bits/channel limitation could not display the details.

Now open an 16 bits/channel picture in Photoshop and Click Image->Adjust->levels you will see the white stripes aren’t there anymore! That’s because the extra 8 bits/channel was able to accomodate more details per channel and therefore no loss of information when doing levels/curves/…

Photoshop CS (Worth It?)

Should you buy (or upgrade to) Photoshop CS. The answer to that I think depends largely upon what you use (or going to use) Photoshop for. If you are a digital Photographer and own one of the following cameras, then the answer is yes! Here’s why:

One of the great features added to Photoshop CS is the ability to open RAW photographs. Prior to CS I would have to open my RAW files with Canon’s FileViewer Utility convert the RAW image to TIFF (16 bit/channel) and then open it with Photoshop. This whole process took so long that by the time I had the picture open on Photoshop for some editing I had already wasted a lot of time. Now with Photoshop CS I can directly open my Canon (10D) RAW files (before opening you have the option to choose 8 bits/channel or 16 bits/channel).

The other thing you will certainly feel is that Photoshop CS is much faster at rendering RAW pictures compared to Canon’s FileViewer Utility. To do a simple test, I took a RAW image and changed it’s color balance from Daylight to Tungsten, this process took about 4-6 secs (on my Dual Intel XEON 2.2GHz (Hyperthreaded), 1.0GB RAM, 256 video-RAM) with the FileViewer. I tried the same steps with Photoshop CS (with the same picture) and the process took at most 2 sec. That’s quite a saving!

In addition to that Photoshop CS seems to have more tools available on the 16-Bit/channel mode compared to Photoshop 7.0.

There are certain other improvements which might be useful to other demographics. Such as:

1) Text on path :- Draw a path and the text tool will follow it.
2) Color match :- Do color balance (on a target image) to match a source image
3) Color filter menu :- A new color filter menu that can apply color filters
such as: Warming filter, yellow filter …
4) Completely redisgned File browser (much faster)

Finally one last notable feature with ImageReady CS (which I believe comes default with Photoshop CS, I certainly have it). Now with ImageReady CS you can create Macromedia Flash animations! Yes, if you can create an animation with ImageReady CS then you can export it to Flash format.

Sequential Preloading..

How do you make certain JavaScript sequentially preloads your images? For instance if you have 10 images and the size of image 9 is the smallest then it’s most likely JavaScript (internet explorer rather) will load image 9 first. Then the second smallest or perhaps in no true order. However there are times when you need to make certain the images are loaded in sequence…. The following accomplishes this — figured it out after a lot of problems:

function Preload() {
    var t = new Image;
    t.src = AlbumImages[loaded];
    t.onload = function () {
        loaded++;
        Preload();
    }
}

Where AlbumImages is an array of strings that contains URLs to images and loaded is a global variable starting at 0.

Disable MyImage toolbar in IE

You can disable the often annoying MyImage toolbar Internet Explorer brings up when the mouse goes over an image. The MyImage also sometimes automatically resizes an image to fit the screen all this can be disabled by employing one of these techniques:

1) In the img tag itself you can do:

<img galleryimg="no" src="..." />

2) Or if you prefer disable this feature all together by doing:

<meta HTTP-EQUIV="imagetoolbar" CONTENT="no">

Speaking about events technically

The other day I was working on something in JavaScript and I thought I would share that with you. Before I can begin though I have to describe the scenario.

I have an image in an HTML page (lets call it: MyImage). I dynamically attach an event to the Image’s onload method. Due to other events on the page MyImage’s SRC attribute gets changed to something else. Now logically the onload event should execute again once the new SRC element gets loaded. But guess what? It doesn’t. onload is known as a: “recursive descent” event meaning it descends recursively from the BODY; so unless the BODY’s onload event doesn’t change (which doesn’t happen until reload/refresh) MyImage’s onload event does not fire.

So how can you check if the new SRC element got loaded? The trick is to use the readyState event (only in IE) you can do MyImage.readyState to check to see the status of the image, the finite-automaton for all readyState objects is the following:

uninitialized - Object is not initialized with data.
loading 	- Object is loading its data.
loaded 	- Object has finished loading its data.
interactive 	- User can interact with the object even though it is not fully loaded.
complete 	- Object is completely initialized.

uninitialized -> loading -> {loaded OR interactive} -> complete

Embedded Software

Interesting semester coming up for me. As some of you may know I am starting (at least partially) my masters in Computer Science. After much thought. I have decided to focus on the field of: Embedded Software Development. Embedded applications are everywhere. When you use your microwave, drive your car, program your tv, program you DVD player and on and on.

Almost all household devices have some software embedded into it. That’s how it functions. Of course there has to be someone writing those softwares. I will be that person.

About 10 years ago however, a company would hire an Electrical Engineer or a Computer Engineer to do this task. But recently there has been some advancements where Computer Scientists can design the software as if they were writing it for the PC. Then a third party software such as: VeriLog takes the assembly of the software (with the help of some hardware such as EP-ROM writers) and takes care of writing to the device so that the device can function.

Of course each devices has to supply an API that can be used to manipulate or get access to information from the actual device. But most devices these days do.

XP Theme in Windows 2003

Well I am back after a long vacation. My summer school started today; so that’s not that great.

During this weekend I spent sometime updating my system to: Windows 2003 (Standard Server). At first install the interface seems similar to Windows 2000. However if you have enough (video/system) memory you may wish to switch to the XP theme. To do this, perform the following:

Click start -> Administrative Tools -> Services
Look for the Themes service
Double click that.
Change the startup type to:: Automatic
Click start
Click Apply
Click OK

Right click desktop, go to appearance change the “Windows and buttons” style to: “Windows XP Style”

Click Apply.
It’s better this way!