PDA

View Full Version : chiedo attenzione per un'opera di volontariato


Leron
09-12-2008, 12:57
spero non venga considerato come un "cercare lavoro gratuito", a me non ne viene niente e andremmo solo ad aiutare qualcuno

la figlia di un mio conoscente è disabile, potete trovare alcune informazioni sul suo sito

http://www.ilcoraggiodivivere.it/index.php

http://www.ilcoraggiodivivere.it/pages/la-mia-malattia.php



ora da qualche tempo sembra che riesca a comunicare tramite delle "schede parlanti" (premi l'immagine e senti un suono)


da poco hanno comprato un tabletPC che dovrebbe servire allo scopo


so che esistono software di questo tipo ma le trafile sono infinite, costano un casino e sono ridottissimi quanto a espansione

chiedo se qualcuno di voi è in grado (non dovrebbe essere difficile) di realizzare un software che associ un suono alla pressione di un'immagine

in pratica l'obiettivo sarebbe di realizzare una griglia di bottoni che copra tutto il monitor con una decina di icone che simboleggiano le varie attività, premendo su queste si sente il suono.

mi arrangio io a fare suoni e immagini, quello che servirebbe è il software che le fa funzionare! non deve essere una cosa difficilissima in fondo è semplicemente impostare che "al click" di un'immagine si senta un suono... e che sia espandibile... con visual basic credo che sia pure abbastanza veloce

qualcuno di voi sarebbe così gentile da offrire un po' del suo tempo per dare una mano in questa cosa? io non lo so fare...

Vincenzo1968
09-12-2008, 14:03
Ciao Leron,

posso provarci. Mi fai avere suoni e immagini?

:)

P.S. con "espandibile" intendi che l'utente deve avere la possibilità di aggiungere/cancellare immagini, giusto?

Torav
09-12-2008, 14:14
ciao! Io non sono un grande esperto di interfacce grafiche con linguaggi di programmazione non web, quindi considera la mia proposta se non trovi altro.
Date le mie conoscenze di php, javascript css e roba varia potrei farti una piccola applicazione da far girare su un browser (nel caso posso farti facilmente anche una parte gestionale in cui scegliere autonomamente quale immagine caricare e quale suono associare)

cionci
09-12-2008, 16:38
P.S. con "espandibile" intendi che l'utente deve avere la possibilità di aggiungere/cancellare immagini, giusto?
Immagini e suoni direi.
Basterebbe un file ini in cui si associa l'immagine al suono.

Vincenzo1968
09-12-2008, 17:14
Immagini e suoni direi.
Basterebbe un file ini in cui si associa l'immagine al suono.

Infatti, si. Pensavo di fare qualcosa tipo drag and drop, in modo che l'utente non debba modificare a mano il file ini.

^TiGeRShArK^
09-12-2008, 20:34
fatto...
per prova ho creato 4 immagini e 4 suoni.
Il suono è associato all'immagine semplicemente tramite il nome (verrà riprodotto il suono nella cartella sounds corrispondente all'immagine nella cartella images).
In teoria il programma dovrebbe vedere quanti file sono presenti nella directory delle immagini e calcolarsi la dimensione adatta per farne entrare il maggior numero a schermo intero...
Ma in pratica ho provato solo con 4 immagini :p
Ad esempio con quattro immagini utilizza una dimensione che è poco meno di un quarto di schermo.
La dimensione calcolata in base alla risoluzione dello schermo e al numero delle immagini viene comunque stampata su console per dimensionare correttamente le immagini ed evitare il rescaling.
Per farlo partire si deve lanciare dalla cartella in cui è stato estratto il comando:

java imagesAndSounds.Program

per farlo partire senza far comparire la console si dovrebbe usare javaw al posto di java se non ricordo male.
La versione di Java necessaria è la 5.
mmm..
mi pare che non ci sia altro da aggiungere...
fammi sapere se ci sono problemi e come va :D
Il link per il download è questo:
http://rapidshare.com/files/171867334/Archivio.zip.html

Leron
09-12-2008, 22:10
vi ringrazio, anche da parte sua :)

gli passo tutto e vedo come va :D

^TiGeRShArK^
09-12-2008, 22:42
vi ringrazio, anche da parte sua :)

gli passo tutto e vedo come va :D

se lo vuoi provare gira anche su mac :D
(in realtà l'ho fatto sul macbookpro e sotto windows non l'ho provato ma non dovrebbero esserci problemi :p)

ah..
e visto che siamo su un forum tecnico ecco anche il sorgente...

public class Program implements MouseListener {

private static JFrame frame = new JFrame("Images & Sounds");;
private static JPanel panel = new JPanel();
private static int width = 0;
private static int heigth = 0;
private static final String IMG_PATH = "images/";
private static final String SND_PATH = "sounds/";


public Program() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}


private void createAndShowGUI() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Toolkit toolkit = Toolkit.getDefaultToolkit();
width = toolkit.getScreenSize().width;
heigth = toolkit.getScreenSize().height;
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
panel.setMaximumSize(toolkit.getScreenSize());
panel.setPreferredSize(toolkit.getScreenSize());

loadImages();

frame.add(panel);
frame.pack();
frame.setVisible(true);
}


private void loadImages() {
File dir = new File(IMG_PATH);
String[] images = dir.list();

int imageWidth = width / (images.length / 2) - 30;
int imageHeigth = heigth / (images.length / 2) - 30;
System.out.println("Image width is: " + imageWidth);
System.out.println("Image heigth is: " + imageHeigth);

for (String imageName : images) {
ImageIcon imageIcon = new ImageIcon(IMG_PATH + imageName);
Image scaledImage = imageIcon.getImage().getScaledInstance(imageWidth, imageHeigth, Image.SCALE_SMOOTH);
JLabel label = new JLabel(new ImageIcon(scaledImage));
label.setPreferredSize(new Dimension(imageWidth, imageHeigth));
label.setName(imageName.substring(0, imageName.lastIndexOf('.')));
label.addMouseListener(this);
panel.add(label);
}
}


/**
* @param args
*/
public static void main(String[] args) {
new Program();
}


public void mouseClicked(MouseEvent e) {
try {
AudioClip clip = Applet.newAudioClip(new File(SND_PATH + e.getComponent().getName() + ".wav").toURL());
clip.play();
} catch (Exception ex) {
ex.printStackTrace();
}
}


public void mouseEntered(MouseEvent e) {
}


public void mouseExited(MouseEvent e) {
}


public void mousePressed(MouseEvent e) {
}


public void mouseReleased(MouseEvent e) {
}

}

così magari qualcuno mi può dire se va bene la formula che ho usato per calcolare la grandezza delle immagini da adattare a seconda della risoluzione e del loro numero che l'ho calcolata un pò ad occhio :stordita:

Leron
09-12-2008, 22:45
lo ho provato funzia benissimo anche su mac :D l'unica cosa sembra che lasci uno spazio all'inizio ma fa niente :)

^TiGeRShArK^
09-12-2008, 23:07
lo ho provato funzia benissimo anche su mac :D l'unica cosa sembra che lasci uno spazio all'inizio ma fa niente :)
il problema dello spazio penso che sia dovuto alla latenza del mio cervello tra quando spingevo il tasto rec e quando partivano le corde vocali :asd:
Se rimuovi lo spazio all'inizio della traccia con audacity penso che dovresti risolvere il problema :p

Leron
10-12-2008, 10:29
il problema dello spazio penso che sia dovuto alla latenza del mio cervello tra quando spingevo il tasto rec e quando partivano le corde vocali :asd:
Se rimuovi lo spazio all'inizio della traccia con audacity penso che dovresti risolvere il problema :p

no non parlo del file audio :D ma di uno spazio che c'è nella prima immagine che viene stampata :)

come se ci fosse un'immagine prima della prima, ma non si vede

^TiGeRShArK^
10-12-2008, 11:15
no non parlo del file audio :D ma di uno spazio che c'è nella prima immagine che viene stampata :)

come se ci fosse un'immagine prima della prima, ma non si vede

:mbe:
io avevo lasciato un bordino di qualche pixel tra tutte le immagini..
intendi quello? :fagiano:
altrimenti posta uno screen che non ho capito :p

Leron
10-12-2008, 19:06
:mbe:
io avevo lasciato un bordino di qualche pixel tra tutte le immagini..
intendi quello? :fagiano:
altrimenti posta uno screen che non ho capito :p

http://img136.imageshack.us/img136/1598/immagine14hm6.th.png (http://img136.imageshack.us/my.php?image=immagine14hm6.png)

^TiGeRShArK^
10-12-2008, 19:47
http://img136.imageshack.us/img136/1598/immagine14hm6.th.png (http://img136.imageshack.us/my.php?image=immagine14hm6.png)

:mbe:
stranissimo... :fagiano:
da me si vede così:
http://img201.imageshack.us/img201/9551/imagessoundsev8.th.png (http://img201.imageshack.us/my.php?image=imagessoundsev8.png)
...non è che hai qualche altro file che non sia un'immagine sotto la cartella images?
(chessò in windows magari può essere il thumbs.db)
perchè in quel caso viene creato lo spazio, ma non riuscendo a leggere l'immagine rimane vuoto....

banryu79
11-12-2008, 08:02
Tiger, nel metodo loadImages() quando fai questo:

String[] images = dir.list();


potresti risolvere passando come parametro al metodo list() della classe File un'implementazione dell'interfaccia FilenameFilter (http://java.sun.com/javase/6/docs/api/java/io/FilenameFilter.html), che filtri in base all'estensione dei file, così saresti sicuro di contare solo le immagini.

Facendo una cosa del genere:

import java.io.File;
import java.io.FilenameFilter;

public class ImageFilenameFilter implements FilenameFilter
{
public boolean accept(File dir, String name)
{
if (name.endsWith(".jpg") || name.endsWith(".gif") || name.endsWith(".bmp"))
return true;
return false;
}
}

dovrebbe andare tutto liscio...

^TiGeRShArK^
11-12-2008, 08:14
Tiger, nel metodo loadImages() quando fai questo:

String[] images = dir.list();


potresti risolvere passando come parametro al metodo list() della classe File un'istanza di FilenameFilter (http://java.sun.com/javase/6/docs/api/java/io/FilenameFilter.html), che filtri in base all'estensione dei file, così saresti sicuro di contare solo le immagini.

si, ma io volevo prendere tutte le immagini che java riesce a leggere indipendentemente dall'estensione....però non avevo pensato al famigerato thumbs.db :fagiano:
comunque mi sa che avrei anche dovuto modificare imagewidth e imageheight dividendo per la radice di N anzichè per N / 2, quindi con l'occasione faccio entrambe le modifiche :p

^TiGeRShArK^
11-12-2008, 08:24
Tiger, nel metodo loadImages() quando fai questo:

String[] images = dir.list();


potresti risolvere passando come parametro al metodo list() della classe File un'implementazione dell'interfaccia FilenameFilter (http://java.sun.com/javase/6/docs/api/java/io/FilenameFilter.html), che filtri in base all'estensione dei file, così saresti sicuro di contare solo le immagini.

Facendo una cosa del genere:

import java.io.File;
import java.io.FilenameFilter;

public class JPGFilenameFilter implements FilenameFilter
{
public boolean accept(File dir, String name)
{
return name.endsWith(".jpg");
}
}

dovrebbe andare tutto liscio...
vabbè.. io pensavo ad un anonymous inner class che fa il controllo per tutti e 3 i tipi di immagini valide :D

..e la finisci di editare mentre ti rispondo? :asd:

banryu79
11-12-2008, 08:29
vabbè.. io pensavo ad un anonymous inner class che fa il controllo per tutti e 3 i tipi di immagini valide :D

..e la finisci di editare mentre ti rispondo? :asd:
Editato mentre rispondevi :D

^TiGeRShArK^
11-12-2008, 14:26
ho messo il filtro per prender solo i .jpg, .gif, .png e ho modificato la formula di scaling in questo modo:

double scale = Math.sqrt(images.length) * 1.1;
int imageWidth = (int) (width / scale - 20);
int imageHeigth = (int) (heigth / scale - 20);

che mi pare si comporti meglio della precedente, soprattutto all'aumentare del numero di immagini :p
in allegato c'è la nuova versione :p