Handle images in JSF - java

I am currently developing a website in which several images will be displayed on a single page. In light of performance, I'm searching for the best way to handle thes images.
First, I will explain my needs. The back-end of the website consists of a CMS in which images can be uploaded (and maybe resized by the user so the image will have the neede ratio of width/height). These images will be displayed on several pages in de website, requested by (hopefully) many users.
Secondly, I will shortly describe my environment. I am developing in Java EE, using JSF as front-end. I am using multiple libraries like Prime Faces et cetera.
I have done some research and it seems there are dozens of solutions, but I don't know in which direction to search. E.g.:
Saving images in database
Saving images as static images by using for example filestreams
So in short:
Which way of saving and requesting images would be best in this case?
What library would you advice to serve me in this?
Is there a JSF-solution to manually resize images?
Would ImageJ be the best solution to generate thumbnails? If not, what would be?
If any other details are needed, I'm happy to provide them.
Thanks in advance.

I wouldn't worry about performance until it becomes an issue. I would perhaps worry more about auditability, maintainability etc.
In order to make a future change easy, however, is abstract away your image store such that you can easily replace (say) a file-based system, with a database system (or a cloud-storage solution, or, or...).
That way you can easily substitute one for another and compare/constrast if need be, or simple swap out your implementation at a later date.

So..
Saving images as files is best
After some research it seems that PrimeFaces offers ImageCropper
File Upload can be achieved using PrimeFaces' FileUpload
But still, I have seen many discussions on Image Manipulation by Java and the best tooling for this. Some say ImageJ would be great, others don't. Is there any reason why I should go with one or another?

Related

Programmatic annotations via YouTube's Data API

Wondering if anyone knows of a way to insert annotations programmatically using YouTube's Data API. It's entirely possible to access functions like upload, meta-data, etc. I don't see anything annotations however.
https://developers.google.com/youtube/v3/guides/uploading_a_video
Basically I'm trying to upload a video that has a different annotation on every frame (that points to a corresponding frame elsewhere in the video) — obviously the GUI YouTube provides would make that incredibly time consuming.
Here's an real example of the sort of functionality I'm after:
https://www.youtube.com/watch?v=VNRMSKSZY04
Any ideas welcome so long as they sit natively within the YouTube environment.
Many thanks.
Unfortunately you can not do it using the API. One way would be a browser Plugin to do this using the annotations-page...

Creating offline map tiles for JMapViewer

I want to create offline map tiles for JMapViewer from an image. How may I be able to achieve it? What are the tools used to generate those tiles?
There are different ways to reach that goal. All of them make use of an external toolchain:
1. Offline renderer
This is a bit more complex, as you need to use a renderer, a map style and OSM data packages to render your own map tiles on your box. A first simple way is to make use of Maperitive as it's very easy to configure and comes with styles. More advanced, you can setup a whole OSM rendering stack (Mapnik, PostgreSQL DB, osmosis, ...) so please see the tutorial at www.switch2osm.org
2. Tile downloader
This is pretty easy. There are different tools to download tiles from the official servers:
http://wiki.openstreetmap.org/wiki/Category:Tile_downloading
But please keep in mind that this machines are donated and should not be stressed by just a few single users. So the speed needs to be very moderate and respect the TUP:
http://wiki.openstreetmap.org/wiki/Tile_Usage_Policy

Optimizing performance for image displays

I am writing a web application that has a page that returns a list of results of objects that each have a profile photo.
I am unsure of how large I expect this page to get, but I want to account for it getting to a larger level. Right now, I am only returning 5-10 objects each with an associated photo, and I am seeing a performance decrease.
I am aware there are many resources on the internet regarding image optimization, and I have done some research, but am still lost as to what I should do to optimize this page.
I know that using css-sprites is an option, but these photos are added by members, so I'm not sure If I could keep up with updating the CSS Sprite.
I am also aware that some image types might be better for performance, but sometimes with a loss of compatibility(although I have read articles that argue against this, and say it is something of the past).
I am fairly new to the concept of needing to optimize images on my page, so if there is a more advanced technique that somebody believes might be over a more novice developers ability, then it might be the wrong thing for me.
Any advice would help. If I try one and am unable to figure out the answer, I can always try another.
I realize this is something that can go on StackOverFlow's sister website regarding web design, but I would like to get the server side of it as well because there may be some fixes I need to make when I am uploading the file, so please no comments on how this is not fit for StackOverflow, Thanks!
a good way of optimisng images is using cache, and plus thumbnail them!
if you dont know about caching:
this is good tutorial to start for
webdesigners/ devlopers:Cache Tutorial for web authors`
this is good tutorial on creating images into thumbnails using php and Gd(which comes default with php)
just check incase
Create thumbnails using PHP and GD`
Thumbnail them server-side to the EXACT dimensions needed, then convert them to a jpeg. Also, if possible, just use one "default" photo for all of the users then load the individual profile photos via AJAX once the page has loaded.

Getting an image from a game model

So I'm not 100% sure if it's possible, but what I'd like to do is take a model that someone has created for a game, say in Blender or something similar, in various formats, and from that create an image to show on a website.
Are there any Java libraries around that could help me with that? Java3D maybe? Or even something in Flash? Ideally you'd be able to rotate the model in some embedded flash app, but I'd settle for a plain old image.
It depends on how far you want to go. Most models are going to be in a standard format- or can easily be converted to be - and most 3D Apis are able to load these formats in.
It would be a little unusual to do this on a server - you may even need to have OpenGL installed on it - but it should be quite easy to load a model in to a 3D environment and take a snapshot or a series of snapshots quite easily. Possibly even use these to create a short video clip of a complete turn around the model. If you're using Java take a look at some of the things people are working on over at http://www.javagaming.org/ - I don't know that Java3D is in use much still but there are other good 3D java environments around. JMonkeyEngine looked most interesting last time I was exploring that area.
Alternatively you probably can set up a way of loading the model into a clientside environment - I don't know if Flash can do 3D stuff now, but Shockwave certainly can ( although it's horrible to work with ) and I believe the Silverlight stuff likewise. Of course unless you are pregenerating your animations you are likely to be passing the model to your display logic on the client and a savvy user could intercept that, but the risk is probably reasonably low and from your question it's not clear whether that would be a problem to you.
Take a look into this post:
http://techblog.floorplanner.com/2010/01/25/introducing-asblender/
"Enter ASBlender, a library I slapped together in a few days to read Blender’s .blend file format and parse it to AS3."
lucky you! ;)
EDIT: added link for the project:
http://github.com/timknip/asblender
EDIT2: With the asblender library you can parse directly the .blend file (this is the working file, not a exported file format). Once you have the file inside the flash application you can use Papervision (I believe you do the same with other 3d libraries) to render the model, this way you can do a single image of the model or you can let user to see the model rotating. Beware that any of this libraries won't give the same render quality that a 3D application like blender is capable of. The good thing about this library is the capability of reading all the info in the scene, so you can match cameras and lights to be as close as possible to the original .blend file.
Alternatively there are also other parsers like Ase, Collada , DAE, KMZ, Max3DS, MD2, Sketchup, SketchupCollada... all of this inside papervision library.

Generating and visualising a decision tree

I wonder if anyone is able to help or advise with the following; I have to be able to take data from a data source and to be able to visualise that data as a decision trees on a web page all. This will be a single process which is seamless to an end user.
This will be done using JSPs and Java servlets but what concerns me are the underlying products. I'm thinking of passing the data to a Weka classifier and then doing something with the .dot file it creates, i.e. maybe feeding it to GraphViz or trying to use the Google Visualization API to present an interactive display.
But, can anyone tell me if this is a viable approach or suggest alternatives?
Thanks
Martin O'Shea.
I've had a lot of success creating data flow graphs with graphviz (I uploaded them with a script to a MoinMoin wiki and used the graphviz plugin). That plugin even allowed to have links in the graphs, so we could keep the individual graphs small.
For the UI we have added the JS stuff from http://www.mxgraph.com/ to display larger graphs to the user.
Your approach is viable however. GraphViz is a good tool.

Categories

Resources