views:

222

answers:

7

Are there any better web languages for a web app that is designed to handle user-submitted images?

Essentially a web app that will accept user submitted pictures and be able to create albums, etc. All the features of a Flickr or Facebook Pics.

Aside from languages, is there anything else that might be different for a web app designed to handle images than a web app just handling text that I should be aware from the get-go?

Thanks.

Update:

Is there a way to handle picture resizing - on the client side - other than a Java applet - that's universal for all major browsers and major OSes?

Update 2:

So the consensus seems to be to just try various languages & frameworks and see which I like best for the particular project. I will definitely be checking out RoR & Django for starters, then if I don't see anything I like moving to PHP & some framework there. Thanks for all the advice guys, appreciate all of the answers & comments.

+1  A: 

I've had good luck with Ruby on Rails, it's very easy to make a quick prototype of a website, and there a number of plugins that handle image uploading and other things you might want to do with images.

Brian
Brian, would you say that Python would be a good equivalent to Rails and Django the same for RoR ? Just curious.
marcamillion
Ruby is similar to Python. Both are languages.Rails is similar to Django. Both are web application frameworks.
mmc
I don't have experience with Django, but I have heard very good things about it, so I'd do some research before you pick a framework, to see which communities have made plugins or have good setups for photos.
Brian
+2  A: 

Both Flickr and Facebook are written in PHP. For image resizing, there's some other tools they would use, rather than doing all the work in the web-process, but they can mostly be run from PHP as well.

One thing that all the larger sites do (and I have, on my own site) is, as I said above, perform the heavy lifting part of resizing images offline. Even a simple camera-phone can now produce an image that is several megabytes in size. While processing (even to reduce in size), the memory usage can balloon to 100MB+. Performing the resizing tasks away from the webserver is therefore essential. A very popular method of passing the file around is to use some form of queue to hold, and then output the filename (and it's location on disk) to the dedicated process. One such tool I've used myself for such queuing is http://xph.us/software/beanstalkd/ Both Facebook and Flickr have their own. It's also not difficult to use such things as Zend_Queue with a Mysql-based system to hold the queue or work.

Alister Bulman
A: 

We've used this for a couple projects: http://albumdy.com/

Its got all the bells and whistles and its easy to customize for you want to add or take out.

Brian
+6  A: 

Just about any language with a good developer community would be a good choice. If you have any programming experience, choose something syntactically similar to what you are already familiar with.

If you have no programming experience, run through some tutorials for Rails, Django, and maybe a PHP framework, and see which feels most natural to you.

mmc
A: 

marcamillion,

For the most part, all languages and associated frameworks are just about capable of the same things (que flamewar...).

You will find that they all are capable of accepting and uploaded photograph and they all have various ways to manipulate, store and display these photgraphs.

If I were you, I would spend a little time playing with various languages to see which one feels comfortable.

Do a few basic tutorials, figure out how they handle forms, how they interact with databases. What can and can't be done easily.

Then revisit your question here from the point of your favoured language/framework.

Greg B
A: 

I would suggest Ruby (on Rails).

There's plenty of plugins to handle image-upload, for example Paperclip (which handles upload, thumbnail generation)

That said, there's similar libraries for pretty much any language (for Python/django, PHP/CodeIgniter and so on) - use the language you're most familiar with, or most interested in learning. For example, I'd probably write it using Python and the Google App Engine framework/service, because it's something I want to learn..

dbr
LOL dbr you totally confused me with your post. I was initially going to go the Python/Django route before I wrote this question but figured I would at least ask first - then based on the above responses I figured i would give Ruby on Rails a try and see how I like it - then you threw in your curve ball at the end.I understand what you mean, and thanks for the feedback. I hadn't thought about the Google App Engine framework/service - which gives 1 more point to the Python side of the debate.
marcamillion
A: 

Briefly on open source languages prominent in web development: Python, Ruby or Perl all have helpful communities (BTW Perl doesn't have to be written obscurely at all, it's just that good Perl programers like to use the shorthand. There are also plenty of well-paid Perl jobs, too, even at Google). PHP is widespread and has some excellent frameworks too, but there's also a lot of poor PHP code and advice on the web, so beware of that and find a sound place for PHP advice. Also, keep presentation/style, data and logic separate (MVC is one current way of doing this). Don't fall into PHP/HTML soup!

Most languages have a module for handling images server-side. The idea would be to provide a client-side (Javascript) interface to manipulate the image visually in the browser, ask an 'are you sure?' kind of question, then do the processing server-side and present the result.

Like everyone says, try a few languages, join the community groups when you get stuck to test how friendly they are, and see how you feel. The good thing is that you can use many so-called 'scripting' languages (i.e. ones that don't need compiling) for other work too, like web/desktop hybrid apps.

Dave Everitt