Click here to Skip to main content
Licence 
First Posted 9 Mar 2003
Views 204,251
Bookmarked 81 times

Thumbnail Generator - An easy way to process thumbnails from a large amount of images

By | 9 Mar 2003 | Article
Thumbnail Generator application supporting a bunch of image file types (for both: source images and target thumbnails), fixed target image size as well as ratio calculation, and full internationalization.

Sample Image - ThumbGenerator/ThumbGenerator.png

Introduction

I have always had problems generating thumbnails from a large amount of images quickly and easily. Also standard graphic programs couldn't meet my needs - or it simply took too much time handling image after image.

Benefits

This Thumbnail Generator is qualified for generating thumbnails of images you are publishing on the Internet. Pre-generated thumbnails save you processor utilization and disk space (if you're generating thumbnails on the fly) - or user's time and money.

But also converting a large amount of images from one file format to another can be handled easily.

This project might also be an interesting starting point for Win Form rookies. Learn how forms, simple internationalization support and XML are working together! Just download the project source code, all source files are commented.

Supports

Image support

  • Different file formats (BMP, GIF, JPEG, PNG, TIFF) - for both: source images and target thumbnails
  • Self specified thumbnail image extensions
  • Preview of source images and output thumbnails (including information on width, height, ratio)
  • Fixed width, height as well as maintaining aspect ratio
  • Bilinear re-sampling

Generating a ListBox item:

/* Retrieve image to get it's infos */
Image LbxSourceImage = Image.FromFile(filesFromDialog[i]);
imgList.Images.Add(LbxSourceImage);


/* Calculate image ratio */
float Ratio=((float)LbxSourceImage.Width)/((float)LbxSourceImage.Height); 

/* Generates Listboxitem */
ImageListBoxItem lbxItem = new ImageListBoxItem(
    filesFromDialog[i].ToString()+                /* Filename */
    "\r\n"+txtWidth+LbxSourceImage.Width.ToString()+    /* Width    */
    ", "+txtHeight+LbxSourceImage.Height.ToString()+    /* Height   */
    ", "+txtRatio+Ratio.ToString(),i);            /* Ratio    */

lbxSource.Items.Add(lbxItem);

Multilingual support

Also full multilingual support for English and German language is provided. (Feel free to contribute other translations ;) )

Internationalization is managed via XML. All GUI texts are read on startup, from the application configuration file (of course the language can also be changed during a session). The project includes a collection of useful methods for processing XML documents. You can easily use them for your own applications.

The configuration file looks like:

<?xml version="1.0" encoding="UTF-16"?>
<!DOCTYPE Application SYSTEM "Config.dtd">
<Application>
  <Information>
    <Name>Thumbnail Generator</Name>
    <Version>0.8</Version>
  </Information>
  <StdLanguage Type="en"/>
  <Language Type="en">
    <Text GUIRelation="btnGenerateThumb">Generate Thumbnails -->

Within the application the language information is fetched via XPath. Sample calls:

XPathDocument XPathDoc = new XPathDocument(configFileName);
XPathNavigator nav     = XPathDoc.CreateNavigator();

gbxSource.Text = XmlManager.GetValueFromXPath(nav, 
          "/Application/Language[@Type='"+
          CurrentLang+"']/Text[@GUIRelation='gbxSource']");
gbxTarget.Text = XmlManager.GetValueFromXPath(nav, 
          "/Application/Language[@Type='"+
          CurrentLang+"']/Text[@GUIRelation='gbxTarget']");

History

  • 09. March 2003: Initial release. See section "Supports"

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Christian Ballerstaller

Web Developer

Germany Germany

Member

Experience:
- Java
- C#
- XML, XSL, PHP, ASP, ASP.NET
- Server administration
 
- ASM, Visual Basic (poor)
- Linux (poor)
 
If you have any offers, questions, or project ideas please feel free to contact me.
 
If you experience any bugs in my software, please report them.
 
Thank you.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralSmall error in your demo with Maintain aspect with height specified Pinmembermaildlee19:46 31 Jan '10  
Generalsending the Image to another function Pinmemberdogmatic692:43 7 Nov '07  
GeneralHere's the spanish translation and some comments Pinmemberbauersachs3:08 11 Dec '06  
I cannot reach the author, it looks like his email isn't valid anymore. I've written him the following email (that bounced back). I'll post it here just in case someone else would like to have these infos too or in case he reads here again.
 
I've translated the texts of Thumbnail Generator 0.8 into spanish (see below). It's not my native language and the translations are therefore not perfect.
 
Some bugs in the tool I've noticed:
- When turning off and reenabling "maintaion radio" checkbox both size fields are deactivated. After switching width / height it's ok.
- In the deactivated width and height field there is written "ratio". If the language will be changed the text there doesn't refresh, only after a manual refresh.
- I've set the height fix and enabled "maintain ratio" and made a test. All pics have been squeezed in width. Probably a bug somewhere exchanging width and height.
 
Suggestions for future enhancements:
- Because frequently the pics are rotated already, it should be possible to set the settings for horizontal pics (width>height) and for vertical pics (height>width) separately.
- I would need something to reduce the pics to a special format, but without changing the ratio, but instead use a little cropping. For example original pics in the format 302:200 and 598:400 should both be converted to 30:20 pixel while cutting off some pixel at the border during the resizing.
- Support for NEF pics (Nikon D2X)
- Don't show pics in the listboxes (takes too long), perhaps optional
- Setting the compression ratio for JPG files or setting a destination file size
- Filename jpg instead of jpeg
 
But the sourcecode is good for me and I'll be able to do something with it. Thank you.
 
Greetings from Switzerland
 
Eric
 
---
   <Language Type="es">
      <Text GUIRelation="btnGenerateThumb">Generando Thumbnails --&gt;</Text>
      <Text GUIRelation="gbxSource">Origen:</Text>
      <Text GUIRelation="gbxTarget">Destino:</Text>
      <Text GUIRelation="gbxSettings">Opciones del thumbnail:</Text>
      <Text GUIRelation="lblExtension">Añadido del archivo:</Text>
      <Text GUIRelation="lblFormat">Formato del imagen:</Text>
      <Text GUIRelation="cbxRatio">Tamaño en relativo a:</Text>
      <Text GUIRelation="rdbWidth">Ancho</Text>
      <Text GUIRelation="rdbHeight">Altura</Text>
      <Text GUIRelation="lblWidth">Ancho:</Text>
      <Text GUIRelation="lblHeight">Altura:</Text>
      <Text GUIRelation="lblPixel">Pixel</Text>
      <Text GUIRelation="miFile">Archivo</Text>
      <Text GUIRelation="miChooseDir">Elige imágenes...</Text>
      <Text GUIRelation="miGenThumbs">Generar Thumbnails</Text>
      <Text GUIRelation="miFileClear">Vaciar lista de los archivos</Text>
      <Text GUIRelation="miPreferences">Opciones...</Text>
      <Text GUIRelation="miExit">Terminar</Text>
      <Text GUIRelation="miHelp">Ayuda</Text>
      <Text GUIRelation="miInfo">Informaciones</Text>
      <Text GUIRelation="btnOK">OK</Text>
      <Text GUIRelation="btnCancel">Cancelar</Text>
      <Text GUIRelation="gbxLang">Opciones de idioma</Text>
      <Text GUIRelation="lblLang">Por favor elige su idoma (código ISO):</Text>
      <Text GUIRelation="txtWidth">Ancho: </Text>
      <Text GUIRelation="txtHeight">Altura: </Text>
      <Text GUIRelation="txtRatio">Proporción: </Text>
      <Text GUIRelation="txtRatioShort">Proporción</Text>
      <Text GUIRelation="errImage">Error generando el imagen: </Text>
      <Text GUIRelation="errFile">Thumbnail no podía estar creado. Archivo: </Text>
      <Text GUIRelation="errChoose">Por favor elige los imágenes de los cuales usted quiere hacer thumbnails.</Text>
   </Language>
---

 
Eric Bauersachs
Generaldelete files that add to imageList box Pinmembernazli3:22 28 Aug '06  
QuestionHELPPPPPPPPPPPPP Pinmemberseapigg6:47 16 Jul '06  
Generaluse ratio to make images look better Pinmemberdjohnson1492:55 6 Dec '05  
GeneralI-Load - thumbnail generator free component Pinmemberzioturo0:59 3 Nov '05  
GeneralA generic error occurred in GDI+ PinmemberPaul Novelli6:11 9 Jul '05  
GeneralRe: A generic error occurred in GDI+ Pinmemberdogmatic692:25 7 Nov '07  
Questionsource of the dll?? Pinmembermistery228:51 18 Oct '03  
GeneralCannot find file exception PinsussC# Beginner17:48 20 Apr '03  
QuestionControls library? PinmemberTodd Smith4:20 11 Mar '03  
AnswerRe: Controls library? Pinmemberperlmunger9:53 11 Mar '03  
GeneralRe: Controls library? PinmemberChristian Ballerstaller10:06 11 Mar '03  
Generalirfanview PinmemberLoneRanger21:28 10 Mar '03  
GeneralRe: irfanview PinmemberChristian Ballerstaller10:12 11 Mar '03  
GeneralRe: irfanview Pinmemberjstephenson177115:23 22 Jan '04  
GeneralRe: irfanview PinmemberTodd C. Gleason13:51 16 Nov '04  
GeneralRe: irfanview PinmemberRowland Shaw3:14 29 Dec '05  
GeneralRe: irfanview PinmemberDermot O S1:29 26 Oct '07  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120529.1 | Last Updated 10 Mar 2003
Article Copyright 2003 by Christian Ballerstaller
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid