Digital Photography Articles
Everything you need to know about digital photography. Articles on digital photography workflow, technical articles, JPEG compression, file naming strategies, photo cataloging software (digital asset management), photo software reviews, equipment reviews and archiving the digital photos on CD or DVD.
Learn how to use programs for organizing digital photographs. Also includes a beginners guide to digital photography or those who are making the change from film to digital.
Is there an question or article that you would like to see?
If so, please feel free to leave a comment below!
Latest Photography Articles
| 2011-04-11 | Do-it-Yourself Offsite Backup |
| 2011-04-01 | EXIF Orientation and Rotation |
| 2011-02-22 | JPEGsnoop - JPEG Decoding Utility |
| 2010-11-13 | JPEGsnoop Open Source Code |
| 2010-02-07 | Undelete your Photos! |
| 2009-05-01 | JPEGsnoop - Options |
| 2009-03-27 | JPEGsnoop - Identify Edited Photos |
| 2008-11-10 | JPEGsnoop - Interesting Uses |
| 2008-07-22 | India Photo Gallery - Updates! |
| 2008-05-03 | Rights Managed vs Royalty Free Stock Photos |
| 2008-04-06 | Comparison of Photo Catalog Software |
| 2007-12-15 | Fix Corrupt JPEG Photos! |
Latest Other Articles
| 2008-01-14 | Learning to fly RC Helicopters |
Search Articles
Photo Catalog Software
Everything about photo catalog software, including versioning, software comparison, features, exporting, etc.
Read More
General Digital Photography
Miscellaneous topics on a range of issues relating to digital photography and software.
Photography Links
Latest Comments in Photography Sections
| 2012-05-14 | JPEGsnoop - Options I would also like to beta test v1.5.3 beta. ... |
| 2012-05-14 | JPEG Compression Quantization Tables Great article! THX! Can you give me some advice ... |
| 2012-05-13 | JPEG Compression Quantization Tables Hi. Its really good explanation, One can easily ... |
| 2012-05-05 | Digital Photography Articles I have noticed anomolous color counts between ... |
| 2012-05-04 | JPEGsnoop - Options I would love to work with 1.5.3 beta. Is it ... |
| 2012-05-04 | Digital Photography Articles I'm also interested in looking at the 1.53 ... |
| 2012-04-27 | File naming strategy for digital photos Hello! I am so happy I have found your post! I ... |
| 2012-04-25 | EXIF Orientation and Rotation Thanks for your response Michael, I appreciate. ... |
| 2012-04-25 | Comparison of Photo Catalog Software Media Lightbox (www.medialightbox.com) is worth a ... |
| 2012-04-16 | EXIF Orientation and Rotation Mehmet, maybe this is a week late, and you may ... |
| 2012-04-09 | Comparison of shutter lag and startup delay i am looking for the shutter lag of pentax k7 |
| 2012-04-07 | EXIF Orientation and Rotation Hi, Does anyone know how to put geographic ... |
| 2012-03-18 | JPEGsnoop - JPEG Decoding Utility Hello, I think I've found a bug in JPEGsnoop, I'... |
| 2012-03-18 | Digital Photography Articles Hi Calvin, I love using JPEGsnoop to sort through ... |
| 2012-02-29 | JPEGsnoop - JPEG Decoding Utility Hi Calvin, Great software. I was wondering if you ... |
| 2012-02-29 | JPEG Chroma Subsampling Thank you for a most informative and needed page! |
| 2012-02-27 | JPEG Huffman Coding Tutorial Hello, great explanation! And yes, the ITU T81 ... |
| 2012-02-23 | How many megapixels? Hi, I have to take a picture of a tall building. ... |
| 2012-02-17 | JPEGsnoop - JPEG Decoding Utility Hi, this is a cool program, but I was toying with ... |
| 2012-02-15 | JPEGsnoop - JPEG Decoding Utility Can it also tell if the image has been cropped? ... |
![]() |
| Parade of Lost Souls |
Organizing and Naming Photos
How to be organized when you have thousands of photos on your computer. File name schemes that allow a mix of digital photos, scanned photos and non-photos on the same drive.
Technical Articles
For those interested in knowing the details of how digital photos are stored, articles on how JPEG compression works, and other in-depth tutorials:
Archiving & Storing Photos
Your entire photo collection can vanish in an instant, so a proper methodology in archiving your photos is crucial. Here you will find strategies to help automate the digital photo backup process.
Read More
Importing Digital Photos
Software used to transfer your images from memory cards to your hard drive.
Beginner's Guide to Digital Photography
Articles for those who are either new to photography and want to start with digital, or those who are experienced with film and want to upgrade to digital.
Digital Photography Equipment
Articles on digital cameras and related equipment.


Reader's Comments:
Please leave your comments or suggestions below!orig has X colors per Irfan (uses IJG) and per ImageMagick (also IJG?)
rot180 of orig has Y colors per both apps, delta ~ 100 colors
orig and rot180 of orig both have Z colors per Gimp (colors->info->color cube analysis). this is what you want to see with lossless! But is it true?
rot180 again and both Irfan and I.M. report X again
the orig test file is subsampled 2x1,1x1,1x1. hmm, suspicion...
-dave
I actually have two questions.
First off, I've been using a combination of Irfaniew and Jpegcrop to losslessly optimize the images on my new laptop. (I've been doing it from the start, so it's not such an overwhelming process.) I've hit a snag though with some CMYK jpegs. Irfanview only optimizes the Huffman tables, it won't convert to progressive coding (unless you re-save the image completely). Jpegcrop will perform a progressive conversion, but it only accepts RGB colorspace jpegs. Here's the JPEGsnoop output for the jpg transform plugin Irfanview uses:
*** Searching Executable for DQT ***
Filename: [Jpg_transform.dll]
Size: [72192]
Searching for DQT Luminance tables:
DQT Ordering: pre-zigzag
Matching [JPEG Standard]
Searching patterns with 1-byte DQT entries
Searching patterns with 2-byte DQT entries
Searching patterns with 2-byte DQT entries, endian byteswap
Searching patterns with 4-byte DQT entries
Searching patterns with 4-byte DQT entries, endian byteswap
DQT Ordering: post-zigzag
Matching [JPEG Standard]
Searching patterns with 1-byte DQT entries
Searching patterns with 2-byte DQT entries
Searching patterns with 2-byte DQT entries, endian byteswap
Searching patterns with 4-byte DQT entries
Searching patterns with 4-byte DQT entries, endian byteswap
Done Search
******
Is there some way to tweak the plugin to apply a progressive conversion as well? Or do you know of a tool that will do such a thing with CMYK images?
My second one is more of a hypothetical, but bear with me.
Conventionally, the only truly "8-bit" jpegs are simply grayscale images where the cBcR data has been discarded. I've been wondering though, whether it would be possible to create 256 color "sepia-tone" jpegs by performing a grayscale conversion and then inserting flat, mono-color cBcR data?
jpegsnoop - great tool
One aspect of jpegs i am not entirely sure on is how to define Quantization tables within a jpeg.
For example if i have an image with the following Q Tables:
*** Marker: DQT (xFFDB) *** Define a Quantization Table. OFFSET: 0x00000C0E Table length = 67 ---- Precision=8 bits Destination ID=0 (Luminance) DQT, Row #0: 5 3 3 5 7 12 15 18 DQT, Row #1: 4 4 4 6 8 17 18 17 DQT, Row #2: 4 4 5 7 12 17 21 17 DQT, Row #3: 4 5 7 9 15 26 24 19 DQT, Row #4: 5 7 11 17 20 33 31 23 DQT, Row #5: 7 11 17 19 24 31 34 28 DQT, Row #6: 15 19 23 26 31 36 36 30 DQT, Row #7: 22 28 29 29 34 30 31 30 Approx quality factor = 84.93 (scaling=30.13 variance=1.05) *** Marker: DQT (xFFDB) *** Define a Quantization Table. OFFSET: 0x00000C53 Table length = 67 ---- Precision=8 bits Destination ID=1 (Chrominance) DQT, Row #0: 5 5 7 14 30 30 30 30 DQT, Row #1: 5 6 8 20 30 30 30 30 DQT, Row #2: 7 8 17 30 30 30 30 30 DQT, Row #3: 14 20 30 30 30 30 30 30 DQT, Row #4: 30 30 30 30 30 30 30 30 DQT, Row #5: 30 30 30 30 30 30 30 30 DQT, Row #6: 30 30 30 30 30 30 30 30 DQT, Row #7: 30 30 30 30 30 30 30 30 Approx quality factor = 84.93 (scaling=30.15 variance=0.29)And the Hex values of the DQT marker at 0xDB is 58, with the next 4 bytes consisting of the hex values 59, 5a, 00 and 00.How exactly do these hex values breakdown and define the above tables?
Any help would be greatly appreciated as i cannot find any good examples of this after hours of searching.
- 2B: Section length
- Table 0:
- 1B: Destination ID
- 64B: Quantization Matrix (in zig-zag order)
- ...
I wonder if it is possible that you may have been decoding a different portion of your file as I would have expected you to see the following (given the tables above):Im doing some research on quantization tables, how they change depending on which device takes the image.
Having read a few papers, i stumbled accross this presentation
http://www.dfrws.org/2008/proceedings/p21-kornblum_pres.pdf
On slide 24, it is mentioend that there are 99 known standard Q Tables etc.
Is this true? Was there an initial set of Q Tables created by JPEG but nowadays software generates its own.
If so, is there a list of these tables somewhere?
But software JPEG encoders, cell phones and digital cameras are and were always free to select their own quantization tables for encoding the JPEG bitstream. Devising one's own quantization table that gives the best tradeoff in optimizing file size versus human perception quality is probably quite a challenge, and is likely the reason that some encoders stuck with the Annex tables in combination with the scaling factor formula (which provides more control over final quality). More recent digicams have attempted to generate / select an appropriate quantization matrix on the basis of image content or file size (see my page on variable quantization). That methodology presents new challenges to signature-based encoder deduction techniques.
I tested a DNG file saved a TIFF, reopened, saved a JPEG quality 11, closed and reopened and saved as TIFF again.
JPEGsnoop report No SOI marker found in fwd search.
Can I do this.
I stumbled onto your site and you seem to reference this a few times, but I could not find the information. Any help you could provide would be most appreciated.
For example:
In the above, the height is 0x0798 (1944) and width is 0x0A20 (2592).
Have a look at JPEGsnoop as it should help you identify this and other related details.
... I have a technical question for you about JPEG compression, I've looked through the documentation and done a fair bit of Googling but couldn't find the answer.
What I was curious about was the "YCC Clipped" notes in the "Decoding SCAN Data" section - I seem to get these even with images in Photoshop saved at the highest level.
Am I correct in guessing that it is a symptom of the quantisation? Because the un-quantised-table isn't exactly as the quantised table, it's possible that the Inverse-DCT will result in a table which doesn't only contain values between 0-255?
Thanks,
Rob.
Because JPEG quantization will round to the nearest value (not truncate), large coefficients in the quantization matrix could lead to larger excursions in the YCC range. However, I wouldn't have expected that this would be possible with Photoshop set at the highest level (12, where coefficients are set to 1, from what I recall). The only other causes that come to mind are color space) conversions or corruption in the differential decoding.
Thanks in advance
I am interested in having JPEGsnoop included in the operating procedures for a standards setting organization. Can you please reply with contact information so we can talk.
I have been doing my final year project on JPEG decoder working for a Multi-processors running on a FPGA. I am now desparately running out of time. I am trying to replace my Loeffler IDCT with a Chen-Wang IDCT. I found such an algorithm already written and so I tried incorporating that with my own code. However the image looks very sketchy and the colour is very off. This code is written for the MPEG decoder.
My question is simple: is the idct used in mpeg cross-compatible with that used for jpeg decoding?
Thank you so much for your time,
Peter.
I was wondering - if different types of cameras leave their own quantization tables, is it possible that different cameras of the same model might leave their own unique signature?
In other words, does every camera have a unique signature?
All the best!
~ John
While I have you "on the phone," so to speak, my friend and I were doing some Photochops on a photo he took of his new car to virtually "pimp it out."
He was running CS3 on an OS2 Mac. while I was running CS2 on a Vista PC.
The only ground rules was to produce an image with the same dimensions, print resolution, and Save as 08 quality.
We ran both of them through JPEGSnoop - just in case - and the only difference I found was that his JPG had an APP0 marker and mine did not.
Is that due to any difference in CS2 vs. CS3 or is it an issue with Photoshop on the Mac vs. Photoshop on the PC ?
Thanks!
First, thanks for creating such an informative website as well as your amazing JpegSnoop!
Next, my question. I guess this is more in the area of Digital Image Analysis, but I thought I'd ask it here...is it possible to determine the quality of a jpeg image (low quality and blurry versus high quality and detailed) by examining the jpeg file itself (instead of viewing the image)?
The reason I ask is that I have a folder of approx. 10,000 jpeg files and I'd like to sort them from highest quality to lowest quality, but I'd like a way to sort them automatically without having to view each individual picture and adding metadata to each file (which would be quite time consuming). Thanks for any info!
-Bill
I have been playing recently with python to make a similar tool to work under linux, however I have a small query about Quantization tables, we seem to be getting slightly different results and I was wondering if you could take a look and see what might be wrong.
Contact me for more info if your interested.
I wanted to follow up on my question last year about detecting layers in a flattened image (Yes, I know that is part of the process in saving a PSD to a JPG. Photoshop has that warning every time you go to the SAVE screen).
I have tried using error level analysis to find the answer, but from my understanding of it, there has to be at least one resave of a JPG along with a physical change to the original image, for it to spot anything.
Here is the scenario:
I received a letter of recommendation, an email with attachment, from a chap I wish to hire. He claims that he had it scanned for him.
It looks like it was created in MS Word, using Arial, and then printed off on white stationary with a black and white business logo at the top and an address line along the bottom after the closing.
The letter was not signed (somewhat of a red flag).
The text part of the letter looked darker than the logo -- which may mean that the logo was in color or greyscale -- but I could not find anything unusual - like repeating patterns, different blocking, ringing artifacts, etc. - that would lead me to conclude the text was added to an existing JPG.
After I "Snooped" it, it identified the software as CS2 from the Exif data, but the compression signatures came out as something else, like IrFanView.
Given the Photoshop IRB that JPEGSnoop found with a matching pair of signatures that are not from PS, I take this ro mean that the scan may have been made within Photoshop, saved as a JPG (let's say "Save at 60"), and then dragged through IrFanView for a resave.
Do you think that the resave was to hide any evidence of layers?
I also tried using pixel equalization to spot any unnaturally light or dark pixels, as well as Edge Detection.
I am thinking that this dude scanned a sheet of blank letterhead (creating one layer) and then created a text layer to merge with the first when saving it as a flattened JPG.
But, how do I prove that?
Thanks for your help.
------
One thing that may not be apparent is that when you save an image with Photoshop, all layers are usually "flattened" in generating the single JPEG image. This single image uses only one set of quantization tables. In fact, if you resave an image with various tools, it is generally only the last tool that will define the quantization tables used to encode the final JPEG image.
So, to answer your question: while JPEGsnoop can often identify that an image was generated by Photoshop, it cannot infer further details about the layers that were used to generate the image (at least on the basis of the quantization tables). Therefore, cropping will make no difference to the quantization tables used (in fact it may change them, depending on the tool that you are using for the cropping).
The best way to accomplish what you are after is to use a tool that supports one of the many imaging algorithms that can decompose the error level analysis and other characteristics that point to the fact that an image was created from a composite.
Further down the road, I will be interested in web galleries, either custom or pre-fabed, and POD photobooks. There are plenty of these around, but comprehensive comparative reviews like the articles mentioned above are hard to come by. If they are already at your site, what are the links? If not, perhaps you can provide some. TIA.
I have an image that was saved in Photoshop that I suspect was created from two layers, and I think I know which parts of the image belonged to each layer.
Id there a way to compare two separate parts of an image to see if they originated from separate layers?
For example, the 2nd image/layer looks like it came from an image with a lower quality setting (higher compression ratio) than the first. If I cropped off parts of each image from the merged product of the two, would they produce different tbles in JPEGsnoop?
One thing that may not be apparent is that when you save an image with Photoshop, all layers are usually "flattened" in generating the single JPEG image. This single image uses only one set of quantization tables. In fact, if you resave an image with various tools, it is generally only the last tool that will define the quantization tables used to encode the final JPEG image.
So, to answer your question: while JPEGsnoop can often identify that an image was generated by Photoshop, it cannot infer further details about the layers that were used to generate the image (at least on the basis of the quantization tables). Therefore, cropping will make no difference to the quantization tables used (in fact it may change them, depending on the tool that you are using for the cropping).
The best way to accomplish what you are after is to use a tool that supports one of the many imaging algorithms that can decompose the error level analysis and other characteristics that point to the fact that an image was created from a composite.
I have current plans to incorporate some basic imaging algorithms into upcoming versions of JPEGsnoop, which may address some of what you're looking for. Until then, a search for error level analysis tool may reveal some alternatives.
In other words, you are correct by your guarded use of the terms, "high-probability of being original" and "you cannot prove conclusively that a photo is an original," which I take to mean that it is easier to identify an altered photo.
BTW, in terms of a percentage range, what exactly do you mean by "high probability?"
Thanks, and keep up the good work
Yes, it is far easier to "prove" that an image has been edited than that it hasn't. One of the main reasons why I do indeed refrain from indicating that an image is guaranteed to be original is that I know for a fact that it is possible to fake out such analysis.
As a proof of concept, I have succeeded in doing this myself. However, the chance that someone has gone through this challenging process is quite remote. I have never seen any examples of this "in the wild", so I would peg the probability or originality extremely high. Of course, if you are dealing with a situation where someone wanted to cover their tracks at all costs, anything is possible.
I have a set of Canon Raw .CR2 files that became corrupted whilst travelling. The embedded previews come up fine, but then when it goes to process the larger preview it comes up with the corruption. I suspect it would something along the lines you were saying with JPEGs and interuuption of the bitstream.
I suspect the corruption occured when transferring images either from CF card to storage drive, or from the storage drive to laptop.
Regards,
I am totally lost ... can someone help please ?
Thanks :)
I developed the Linux driver for the Pixart PAC7311 webcam chip and have a problem with picture quality. Pixart claims to use "standard" JPEG but they do not. They included special markers after (or before) each MCU which I must remove to decode the picture.
You can find some information here http://www.kaiser-linux.li/index.php?title=PAC7311
If you are intrested helping me I can give you more detailed information. Just drop me a mail :-)
Thomas
Thanks for updated JPEGsnoop software. It seems like a handy tool when you need to "go deep" into a file.
While I am still researching software for my workflow, my journey has led me to again reconsider shooting RAW. Unfortunately, I have read far too many articles both for and against it for my own good. What are your feelings towards RAW? You always seem to be talking about JPEG files, but I was not clear if you shoot RAW or JPEG. And, if you do shoot RAW, what are your thoughts on RAW converters? I would be very curious to hear your thoughts and opinions.
Thanks,
--Ken
I do shoot RAW, but I generally limit it to times when I a) intend to deliver the shots to others (e.g. a modeling shoot / sporting event), b) place significant importance on the images or c) find myself in difficult lighting conditions. The rest of the time I often choose to shoot JPEG. While the RAW images from my camera (Canon 40d) are certainly nicer and provide far more processing latitude than the JPEGs, one can't forget to factor in the additional processing time that the RAW format usually entails, along with the increase in storage requirements (especially when you keep both RAW and the converted JPEGs). Some people have managed to dial in a RAW processing workflow (importing, converting, XMP tagging, buddy-file synchronization, etc.) that is reasonably efficient, but I am not convinced that my current toolset is what I will ultimately end up using.
When I travel for extended periods of time (e.g. 1 month+) in remote regions, I am also more apt to shoot JPEG because it is more important for me to have enough redundant portable storage to keep copies of the images safe -- file space is already a difficult issue on the road.
As for RAW converters, I have not yet completed a fair evaluation of the different products on the market (Photoshop ACR, Lightroom, Bibble, Phase One, etc.). When I do, I may be in a better position to share my opinions and refine my own RAW workflow.
Also to get the same zoom as say a 70-300 on the DSLR what zoom should I look for in a Point and shoot (recognize of course the quality will be lower in P&S)?
Ignoring the maximum focal length for a moment, it's important to keep in mind that it is much harder to produce a zoom lens with high image quality across a large range versus one that only covers a narrower range. In other words, the 28-300 lens has a 10.7x (300/28 = 10.7), while the 70-300 lens has a 4.3x. For a similar price point, it is a pretty safe assumption that the 70-300 will provide better image quality across the range than the 28-300 superzoom. Nowadays, the superzooms are becoming better, but I would tend to stay away from them unless I was truly requiring an all-in-one for convenience.
As an aside, if you are taking photos from the vehicle, consider buying a bean bag that you can place over the window sill, as you won't be able to use a tripod.
To get an equivalent of 70-300 (on a DSLR) in a point & shoot camera, one would look for an "35mm equivalent focal length" of 110-480, which is very unlikely (this assumes that your DSLR has a focal length multiplier of 1.6x). Note that the rating will say "equivalent" as the sensor size is much smaller in a point & shoot camera, making the real focal length comparison not as simple.
Thanks!
Can you tell me if there is any program that can scan my imported pictures to get the accurate date? We just had our computer cleaned up and when I put them back on the computer a ton of them (which had been taken a long time ago with a different, cheaper digital camera) got imported incorrectly. I'm currently trying a trial version of adobe 5.0.Thanks so much :)
If you see the correct date here, then you're in luck. That means that the image's EXIF information still retained the original photo date. There are many utilities that will use the EXIF date information to update the other file timestamps as well. The most popular utilities to do this are: Exifer, jhead, and AttributeMagic. I'll add this to the list of articles to write, as this is a very common need for digital photographers. For example, you might have forgotten to set the date on your digital camera (or travelled to a different time zone), and later need to update all your photos.
Also, thanks for an interesting site. Hadn't seen it before, but you've done a great job providing a lot of useful info. Downloaded JPEGsnoop and checked several H7-files. I was wondering how they managed to compress all the files so small and with so little variation in file size and it seems like you've got the explanation. Found a lot of variation in the "Approx quality factor" from around 97% to 87% on the files I checked.
Have you looked into any of the online photo storage/sharing sites? I'm interested in using one for an additional back up of my collection and would like to be able to easily share with friends and family. There are so many, it's hard to know which one to choose. With your expertise, I wondered what you thought?
As I made the transition to host my own photo galleries, I never invested much time in comparing all of the various photo sharing sites out there, but I would suggest that you have a look at the following two review pages:
- For snapshot photographers - Comparison of Photo Sharing Websites
- For more serious photographers - Comparison of Photo Sharing Websites
You mentioned an interest in using these photo sharing sites as a backup for your photo collection. Generally, I don't think they do a particularly good job at that because of the fact that they often store much-reduced versions of your photos, not the originals. Some do keep fullsize originals, but you will have to be very mindful of your file storage limit restrictions.A much better plan would be for you to create a backup of your photo collection yourself (on hard drives, DVD-R, remote backup, etc.) instead of relying on a photo sharing site to achieve this goal.
Can you explain why.
Thanks in advance
As for how to avoid purple fringing, it seems that there is some consensus:
The photographer has an amazing eye for capturing astoundingly beautiful images. I am overwhelmed by such beauty, especially the images of B.C.
Thanks!
Thank you for taking the time to create such a fantastic website! I've been reading it quite a lot lately and have picked up loads of hints and tips.
I'd be interested to read your thoughts and views on RAW formats - workflow, pros/cons etc.
Thanks Darren! Glad you found it useful... I will add discussions of RAW workflow to my to-do list. Thx!
This is abstracted from your response to me in dpreview forum on how to track performance of Monaco Optix-XR calibrator:
Can you be more specific? What program do you use to read the ICC Profile contents, and how do you analyse the data?
Thanks, Gerry
Hi Gerry --
Very soon I had intended to open up my section on color management, but at this stage it is not yet ready. One of the articles that I was going to publish was going to detail this exact process. However, in the interim: you can derive objective data from several of the files that are generated by Monaco EZcolor (MonacoEZcolorDevice.log, the monitor *.icm profile, and the IT-8 reflective target data (eg. MONR2004.06.01.mrf). The two key points are that some ICC profiles have text-based sections that include the actual lookup table, and Monaco's target files can be opened as a text file!
As I'm sure you know happens so often on the Internet, I just *stumbled* across your TERRIFIC web site today. I teach digital photography courses at local colleges and at photography "clubs," and maintain a web-site of resources for my students. I had just printed up a list of "Internet Resources on Digital Photography" to give as a handout to my class tonight, but now I have to go edit that file and re-print it with your site added (with three stars next to it, I might add)!
Terrific site!!!! Bravo!
OK, here's my own lame little site (it's oriented towards both my computer and digital photography students, so forgive me). You can go visit at: http://groups.msn.com/Mr-AlexandersNewsletter
Thanks Keith for the nice comments... glad you found it useful!