Jump to content

Writing a ‘wizard’ style program for photo manipulation


Pleiades

Recommended Posts

As part of our business, we take digital photos of people; the photos are put on a CD with some additional materials and sold to the customers.

 

Currently the process goes like this:

  1. Create folder structure on computer (day, AM/PM, group number) I do this fairly quickly by copying template folders
  2. Insert the SD card and copy the pictures from it onto the hard drive, into the folders created in the step above
  3. Use ACDSee to select only the ‘portrait shots’ and batch rotate them (the pictures are a mixture of landscape and portrait)
  4. Open Nero Burning ROM and load a base compilation, verify and change the date in the compilation label if necessary.
  5. Add the pictures to the compilation, and then burn them using multiple recorders.

 

This is no problem for me, but it could defiantly be streamlined, eventually I want someone with little or no computer skill to be able to do this. I would like to write a ‘wizard’ type program that could guide the user through each step and help speed things up some.

 

Unfortunately I am familiar only wish VB and Java, I am hoping I can finish this project with one of the two. There are several gaps in my knowledge however. The first is ‘Auto Insert Notification’ (I think that’s what it’s called). How does windows tell a program when removable media has been inserted? If anyone can point me toward some information about how to implement this I would be grateful.

 

The second is displaying JPEG images and allowing the user to quickly select which ones need to be rotated. Is there an easy way to show thumbnails in java, some API I’m not aware of?

 

The third is the CD burning, I’d like to be able to simply write a Nero compilation file and then simply load it in Nero and let Nero take it from there, the only problems is I can’t seem to find any documentation on Nero’s compilation file formats.

 

Thanks in advance.

Link to comment
Share on other sites

I don't do JAVA or VB.. but I do work with the WinAPI alot. A project like this would probably be best made in C/C++.. but since you are limited to VB or JAVA, I'd say VB is the way to go.

 

1. For the SD Card detection, you would need to research the following API's:

GetDriveType - To get the type of drive inserted (i.e. if its a removable drive or sd card)

 

CreateFile - To open the drive for the next step

 

DeviceIoControl - To get the properties of the drive.. drive letter

 

 

It's not a very simple task, although if you were going to do it in C or C++ there would be sample code avaliable and I could help you out.

 

 

2. For image display, I would do one of two things: use an external application to edit / view images. You application can launch the process using CreateProcess API and try finding a program which can accept parameters so your images are loaded in automatically. Second thing to do if you want to embed images would be to use GDI+. Now i don't know if VB works the same way as C/C++.. but it probably uses the same api =\

 

3. For CD burning you can embed two executables as resources: cdrecord.exe and mkisofs.exe both are open source. You can then extract then when needed during burning and use them to burn the cd you want. You can also monitor their progress and display it on your program though a progress bar.. etc.. To extract the exes from rousouce you can use FindResource, LoadResource, LockResource, SizeofResource and CreateFile.

 

I know this isn't much help since It's all based off C++ methods. But hopefully it would have pointed you in the right direction.

Link to comment
Share on other sites

I'm not familiar on the windows stuff here so just comment on one thing (other than VB SUCKS! but that goes without saying...)...

 

If this was me, I would create an ISO file system of what I want to burn to disk... Nero can deal with these...

Link to comment
Share on other sites

Agree with encipher except for one thing, a small project like this would probably be more easily designed in C#.

 

And I agree with Klaynos - avoid VB, it lacks power and flexability...

 

Cheers,

 

Ryan Jones

Link to comment
Share on other sites

Thanks for pointing me in the right direction encipher, ill read up on those things, I’ll be back with more questions no doubt. I have been meaning to learn C++ for some while; I would welcome any recommendations of IDEs and books to get me started.

Link to comment
Share on other sites

Your best bet would be Microsoft Visual Studio 2003 .NET. I personally beleive that currently, its the best version. VS 6 is outdated and VS 2005 has alot of changes that are unnessicary and break regular c/c++ code. Another choice would be Borland's IDE, but borland doesn't have any Visual Basic IDE's. A good resource to have is MSDN. It's all avaliable online, but I would get me a copy of the MSDN DVD. There's a new one each month and I don't think they are expensive. It's a great resource. As for books I recommend taking a look at:

 

Programming Win32 Under the API (With CD-ROM)

 

Programming Windows, Fifth Edition

 

I would also get a copy of

 

Programming in C, Third Edition If you are planning on learning C/C++. One more thing. STAY AWAY FROM MFC.. or Visual C++..

 

=)

Link to comment
Share on other sites

I meant an IDE specifically for c++; I already have IDEs for java and VB, they may not be the best, but I know them. Borland has a lot of products, is C++Builder what I should be using?

 

When I use managed C++ I use the IDE MS provides with VS, when I'm working with normal C++ or C I use an IDE called Dev-C++ (http://www.bloodshed.net/dev/devcpp.html)

 

Both are good for their own uses :)

 

Cheers,

 

Ryan Jones

Link to comment
Share on other sites

Yes that's the book. If you want to learn C++, you can go directly to it and buy yourself a book on c++. I would recommend building on a foundation of C. Oh yeah, one more thing. Books will never teach you everything. You have to practice ALOT.

Link to comment
Share on other sites

C++ would definately be the best way to go, its much easier to control and you could easily write something like that, the only problem i see is that nero is a complicated program and ive had trouble from them before when i was writing programs to do with nero. They were no help at all in short terms.

Link to comment
Share on other sites

Really any program that can burn on multiple drives simuilatinously would work.

 

Like I said earlier, cdrecord.exe would be the best application for the job. Its less than a megabyte, and you can launch multiple instances of it to burn on differnent drives at the same time. Its also free & open source.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.