Click here to Skip to main content
Click here to Skip to main content

Extract images from private ImageLists

, 17 Feb 2006
Rate this:
Please Sign up or sign in to vote.
Shows how to extract images from an ImageList on a form.

Sample Image - extractimages.jpg

Introduction

Sometimes you want to extract an image from an existing .NET DLL which is not included as a default resource. For instance, you added an image to an ImageList and forgot where the image came from. You now wish to save this image, which is impossible using the IDE of Visual Studio. To do this, I wrote this small piece of code, which is not completely foolproof, but should work in most occasions.

How it's done

First, I open the DLL and scan it for objects of type Form (exception handling removed):

Assembly ass = Assembly.LoadFrom(textBox1.Text);
Type[] types = ass.GetExportedTypes();
            
foreach(Type type in types)
{
    if (!type.IsAbstract && type .IsSubclassOf(typeof(Form)))
    {
        // create instance and extract images
        Form fm = (Form) ass.CreateInstance(type.FullName);
        extractImages(fm);
    }
}

Extracting the images is quite easy; just remember that there can be more than one ImageList. The same can be done to extract images from other types of controls. I convert the images to PNG to recreate the transparency.

Type t = form.GetType();
FieldInfo field = t.GetField("components", 
   BindingFlags.NonPublic | BindingFlags.Instance );
IContainer comps = (IContainer)field.GetValue(form);
int imglist_idx=0;
foreach(Component c in comps.Components)
{
    if (c is ImageList)
    {
               // .. save individual images

.... and so on, hope you get the idea.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Guido_d
Web Developer
Netherlands Netherlands
I am a .NET developer from Gouda, the Netherlands, developing software since mid eighties.

Comments and Discussions

 
General.Net 4 and form not expecting to be called without prerequisites Pinmembermbierman31-Aug-11 12:14 
Suggestionvery good PinmemberReniD21-Jul-11 23:29 
GeneralMy vote of 5 Pinmemberjswolf195-Jul-11 21:01 
GeneralMy vote of 5 PinmemberLatif.Kankanwadi25-Mar-11 19:56 
Generalnice PinmemberPranay Rana30-Dec-10 0:04 
GeneralNice tool. Some suggestions. PinmemberDrew Noakes12-Jun-08 23:34 
GeneralI like!!!! Pinmemberchris17527-Nov-07 2:47 
GeneralRe: I like!!!! PinmemberSteve Hansen27-Nov-07 3:05 
QuestionCan this work on an exe? Pinmemberncarty9711-Apr-07 2:52 
AnswerRe: Can this work on an exe? PinmemberGuido_d25-Sep-07 3:00 
GeneralRe: Can this work on an exe? PinmemberDrew Noakes12-Jun-08 23:27 
Generalcomments PinmemberPaul Brower17-Feb-06 2:08 
GeneralRe: comments PinmemberGuido_d17-Feb-06 2:36 
GeneralRe: comments PinmemberPaul Brower17-Feb-06 2:48 
GeneralRe: comments PinmemberGuido_d17-Feb-06 3:02 

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.

| Advertise | Privacy | Mobile
Web02 | 2.8.140721.1 | Last Updated 17 Feb 2006
Article Copyright 2006 by Guido_d
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid