null

Lab Services

  1. Printing
  2. Film/Developing
  3. Scanning
  4. Passport

Printing

Our printing is done in-house on a Noritsu D1005 HR Dry Lab printer for Luster Prints up to 12 inches wide and 36 inches long
and a Noritsu D700 Lab Printer for Glossy Printers up to 8 inches wide.
Anything larger that 12 inches on the short end will be printed on our Epson Stylus Pro 9800 Wide Format printer, where we can print up to 44 inches wide by up to 144 inches long. All inks for the Noritsu and the Epson are from Epson and are 100 Year Archival Pigment Ink.

Size 1-9 10-49 50+ Metallic Canvas Fine Art
4x6 $0.39 $0.35 $0.29 $1 $5 $5
5x7 / 5x5 $3.35 $3.00 $2.00 $5 $10 $10
8x10 / 8x12 $8.95 $7.00 $6.00 $10 $15 $15
11x14 / 11x17 $15.95 $14.00 $12.00 $20 $30 $30
12x18 $18.95 $16.00 $14.00 $30 $40 $40
12x36 $25.00 - - $55 $75 $75
13x19 $25.00 - - $45 $45 $45
16x20 $30.00 - - $55 $55 $55
18x24 $35.00 - - $75 $75 $75
20x24/20x30 $50.00 - - $100 $100 $100
24x36 $100.00 - - $150 $150 $150
30x40 $150.00 - - $200 $200 $200
Anything Larger see Custom Tab

For highest possible print quality for large, please export image as TIFF and put onto a CD or USB drive. 300 DPI or better up to 1440 DPI.

Film/Developing

Color (C-41) Film (Developed on Monday & Thursday, excepting holidays)

Film Type Price
35mm $7.00
120 $9.00
220 $15.00

B&W Film (Film is hand-processed once we have at least 8 rolls worth of film (120/220 count as 2 rolls) Will call when order is complete

Film Type Price
35mm $15.00
120 $20.00
220 $25.00

Picture Scanning

Or flatbed scans are done on a high end Epson Professional Scanner. Large work is shot in our studio with a very high resolution camera with a flat field lens.

Size 1-9 10-49 50+ Comes With
4x6 / 4x4 / 4x5 / 3x4 / 3.5x5 $5.00 $4.00 $3.00 Picture + CD
5x7 / 5x6 / 5x5 $7.50 $6.50 $5.00 Picture + CD
8x10 / 8.5x11 / 8x12 $15.00 $12.00 $10.00 Picture + CD
10x13 / 11x14 / 11x17 $22.50 $20 $17.50 Picture + CD
Locket $20.00 - - Picture + CD + Install
Wallet $5.00 $4.00 $3.00 Picture + CD
11x14 to 16x20 $75.00 for High Res Reproduction CD Only
18x24 to 20x30 $100.00 for High Res Reproduction CD Only
24x36 or Larger $250.00 for High Res Reproduction CD Only
Please call for Custom or On Location Work

Negative Scanning

Our negatives are scanned one of three ways. Either on our Noritsu LS-600 35mm Film Scanner, our Nikon Coolscan 9000, or an Epson 4990 Flatbed Film Scanner.

Size Price Comes With
35mm (uncut) $5.00 CD
35mm (Strips) $20 for 24 exp, $25 for 36 exp CD
35mm (Single Frame) $5.00 CD
Mounted Slides $2.00 ($10 minimum) CD
Very High Res 35mm/Slides $20.00 CD
120/220 High Res (645 to 6x9) $30.00 CD
126, 127 (Single Frame) $10.00 CD
4x5 $15.00 CD
5x7 $25.00 CD
8x10 $40.00 CD
No quantity discounts available

Passport/ID Photo

Photos are taken Monday through Friday from 9am to 5pm. Please bring paperwork and requirements (sizing, background, quantity, etc). Avoid wearing a shirt that is the same color as the background (which is white most of the time. If your passport/ID requires a stamp, we request that you pick it up the next day to give the stamp ink enough time to dry properly (otherwise the ink might smear)

Size Price (per 2 pictures)
US (2" x 2" / 50mm x 50mm) $15.00
Foreign (White background) $25.00
Foreign (Colored background) $30.00
Digital Passport (CD, no Prints) $30.00
No Quantity Discounts Available

Custom

Coming Soon...

Video

Coming Soon...

 

 

 

 

 

 

 

 

 

 

tag to ensure that all anchors are cached. Note that the code that calls the activatables() function needs to be placed after the inclusion of this file. */ // Wrapped in a function so as to not pollute the global scope. var activatables = (function () { // The CSS classes to use for active/inactive elements. var activeClass = 'active'; var inactiveClass = 'inactive'; var anchors = {}, activates = {}; var regex = /#([A-Za-z][A-Za-z0-9:._-]*)$/; // Find all anchors (.) var temp = document.getElementsByTagName('a'); for (var i = 0; i < temp.length; i++) { var a = temp[i]; // Make sure the anchor isn't linking to another page. if ((a.pathname != location.pathname && '/' + a.pathname != location.pathname) || a.search != location.search) continue; // Make sure the anchor has a hash part. var match = regex.exec(a.href); if (!match) continue; var id = match[1]; // Add the anchor to a lookup table. if (id in anchors) anchors[id].push(a); else anchors[id] = [a]; } // Adds/removes the active/inactive CSS classes depending on whether the // element is active or not. function setClass(elem, active) { var classes = elem.className.split(/\s+/); var cls = active ? activeClass : inactiveClass, found = false; for (var i = 0; i < classes.length; i++) { if (classes[i] == activeClass || classes[i] == inactiveClass) { if (!found) { classes[i] = cls; found = true; } else { delete classes[i--]; } } } if (!found) classes.push(cls); elem.className = classes.join(' '); } // Functions for managing the hash. function getParams() { var hash = location.hash || '#'; var parts = hash.substring(1).split('&'); var params = {}; for (var i = 0; i < parts.length; i++) { var nv = parts[i].split('='); if (!nv[0]) continue; params[nv[0]] = nv[1] || null; } return params; } function setParams(params) { var parts = []; for (var name in params) { // One of the following two lines of code must be commented out. Use the // first to keep empty values in the hash query string; use the second // to remove them. //parts.push(params[name] ? name + '=' + params[name] : name); if (params[name]) parts.push(name + '=' + params[name]); } location.hash = knownHash = '#' + parts.join('&'); } // Looks for changes to the hash. var knownHash = location.hash; function pollHash() { var hash = location.hash; if (hash != knownHash) { var params = getParams(); for (var name in params) { if (!(name in activates)) continue; activates[name](params[name]); } knownHash = hash; } } setInterval(pollHash, 250); function getParam(name) { var params = getParams(); return params[name]; } function setParam(name, value) { var params = getParams(); params[name] = value; setParams(params); } // If the hash is currently set to something that looks like a single id, // automatically activate any elements with that id. var initialId = null; var match = regex.exec(knownHash); if (match) { initialId = match[1]; } // Takes an array of either element IDs or a hash with the element ID as the key // and an array of sub-element IDs as the value. // When activating these sub-elements, all parent elements will also be // activated in the process. function makeActivatable(paramName, activatables) { var all = {}, first = initialId; // Activates all elements for a specific id (and inactivates the others.) function activate(id) { if (!(id in all)) return false; for (var cur in all) { if (cur == id) continue; for (var i = 0; i < all[cur].length; i++) { setClass(all[cur][i], false); } } for (var i = 0; i < all[id].length; i++) { setClass(all[id][i], true); } setParam(paramName, id); return true; } activates[paramName] = activate; function attach(item, basePath) { if (item instanceof Array) { for (var i = 0; i < item.length; i++) { attach(item[i], basePath); } } else if (typeof item == 'object') { for (var p in item) { var path = attach(p, basePath); attach(item[p], path); } } else if (typeof item == 'string') { var path = basePath ? basePath.slice(0) : []; var e = document.getElementById(item); if (!e) throw 'Could not find "' + item + '".' path.push(e); if (!first) first = item; // Store the elements in a lookup table. all[item] = path; // Attach a function that will activate the appropriate element // to all anchors. if (item in anchors) { // Create a function that will call the 'activate' function with // the proper parameters. It will be used as the event callback. var func = (function (id) { return function (e) { activate(id); if (!e) e = window.event; if (e.preventDefault) e.preventDefault(); e.returnValue = false; return false; }; })(item); for (var i = 0; i < anchors[item].length; i++) { var a = anchors[item][i]; if (a.addEventListener) { a.addEventListener('click', func, false); } else if (a.attachEvent) { a.attachEvent('onclick', func); } else { throw 'Unsupported event model.'; } all[item].push(a); } } return path; } else { throw 'Unexpected type.'; } return basePath; } attach(activatables); // Activate an element. if (first) activate(getParam(paramName)) || activate(first); } return makeActivatable; })();

×
×