Reduction d'images numeriques

Reduction d'images numeriques - ASP - Programmation

Marsh Posté le 21-08-2003 à 12:20:55    

salut a tous!
 
je cherche des fonctions en java, en php ou en asp capables de reduire une image en pixel et en octet
 
g besoin de ces fonctions pour ne pas stocker de trop grosses images sur mon serveur
 
 
merci de votre aide
 
:)


Message édité par nartu elxe le 08-09-2003 à 13:15:35
Reply

Marsh Posté le 21-08-2003 à 12:20:55   

Reply

Marsh Posté le 21-08-2003 à 14:26:40    

en java tu peux te servir de JAI.
 
j'ai fais une petite classe utilitaire :  

Code :
  1. import java.io.*;
  2. import java.awt.image.*;
  3. import javax.media.jai.*;
  4. import java.awt.image.renderable.*;
  5. import com.sun.media.jai.codec.*;
  6. public class ImageUtils {
  7. public static PlanarImage getImage(File file) throws IOException {
  8.  return JAI.create("fileload", new ParameterBlock().add(file.toString()));
  9. }
  10. public static RenderedImage adapt(RenderedImage img, int width, int height) {
  11.  return adapt(img, (float) img.getWidth() / (float) width, (float) img.getHeight() / (float) height);
  12. }
  13. public static RenderedImage adapt(RenderedImage img, int nbPixels, int maxWidth, int maxHeight) {
  14.  float scale = (float) Math.sqrt((float) nbPixels / (float) (img.getWidth() * img.getHeight()));
  15.  if (scale * img.getWidth() > maxWidth) {
  16.   scale = (float) maxWidth / (float) img.getWidth();
  17.  }
  18.  if (scale * img.getHeight() > maxHeight) {
  19.   scale = (float) maxHeight / (float) img.getHeight();
  20.  }
  21.  return adapt(img, scale, scale);
  22. }
  23. public static RenderedImage adapt(RenderedImage img, int nbPixels) {
  24.  float scale = (float) Math.sqrt((float) nbPixels / (float) (img.getWidth() * img.getHeight()));
  25.  return adapt(img, scale, scale);
  26. }
  27. public static RenderedImage adapt(RenderedImage img, float scalex, float scaley) {
  28.  ParameterBlock pb = new ParameterBlock().addSource(img);
  29.  pb.add(scalex); // The xScale
  30.  pb.add(scaley); // The yScale
  31.  pb.add(0.0f); // The x translation
  32.  pb.add(0.0f); // The y translation
  33.  pb.add(new InterpolationBicubic(10)); // The interpolation
  34.  return JAI.create("scale", pb, null);
  35. }
  36. public static void saveToJpg(RenderedImage img, File outFile, float quality) throws IOException {
  37.  FileOutputStream fout = new FileOutputStream(outFile);
  38.  writeJpg(img, fout, quality);
  39.  fout.close();
  40. }
  41. public static void writeJpg(RenderedImage img, OutputStream outStream, float quality) throws IOException {
  42.  JPEGEncodeParam encodeParam = new JPEGEncodeParam();
  43.  encodeParam.setQuality(quality);
  44.  ImageEncoder encoder = ImageCodec.createImageEncoder("JPEG", outStream, encodeParam);
  45.  encoder.encode(img);
  46. }
  47. public InputStream getJpgInputStream(RenderedImage img, float quality) throws IOException {
  48.  ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  49.  writeJpg(img, outStream, quality);
  50.  return new ByteArrayInputStream(outStream.toByteArray());
  51. }
  52. public static void main(String[] args) throws IOException {
  53.  RenderedImage img = getImage(new File(("E:/temp/photos/toto.jpg" ));
  54.  img = adapt(img, 1024*768);
  55.  writeJpg(img, new File("E:/temp/photos/toto2.jpg" ), 0.75f);
  56. }
  57. }


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 22-08-2003 à 10:33:11    

J'ai testé ta class mais pour la compiler, j'ai du rajouté quelques try-catch
 
apres execution de ton code, j'ai ca comme erreur:
 
access denied (java.io.FilePermission C:\Documents and Settings\a01.jpg read)
 
mais franchement je sais po pkoi ca fait ca, puisque ce fichier n'est pas ouvert.


Message édité par nartu elxe le 01-09-2003 à 16:51:31
Reply

Marsh Posté le 01-09-2003 à 16:54:46    

up

Reply

Marsh Posté le 01-09-2003 à 16:55:49    

nartu elxe a écrit :

J'ai testé ta class mais pour la compiler, j'ai du rajouté quelques try-catch


 
 :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-09-2003 à 18:44:13    

nartu elxe a écrit :

J'ai testé ta class mais pour la compiler, j'ai du rajouté quelques try-catch


ma classe compile !
 
Mais bien sûr, vu qu'il y a des exceptions générées par les méthodes, tu doit gérer les exceptions dans tes classes qui font appel à ma classe [:spamafote]
mais bon, ca c'est normal hein ! :/
 

nartu elxe a écrit :

access denied (java.io.FilePermission C:\Documents and Settings\a01.jpg read)


 :heink:  
qu'est ce qu'il fout dans ce repertoire ce fichier ???? logiquement y a rien à part les répertoire de sauvegarde des environnements utilisateurs dans ce rep.
T'es sur que c'est le bon chemin ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-09-2003 à 09:38:11    

1) j'ai raccourci le chemin pour le post  :)  
2) Oui je suis sûr du chemin  :jap:  
3) J'utilise Sun One Studio 4 update 1 pour compiler le fichier. T'utilises koi comme compilateur?

Reply

Marsh Posté le 02-09-2003 à 09:46:15    

:heink:  
peu importe ce que j'utilise, ca compile !
envoie les messages d'erreur du compilo...
 
et puis j'en sais rien moi, si il te dit qu'il a pas le droit de lire le fichier, c'est certainement qu'il a pas le droit de le lire [:spamafote]
 
t'essayerai pas lancer le truc dans une applet au moins ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-09-2003 à 09:59:26    

benou a écrit :

:heink:  
peu importe ce que j'utilise, ca compile !
envoie les messages d'erreur du compilo...
 
et puis j'en sais rien moi, si il te dit qu'il a pas le droit de lire le fichier, c'est certainement qu'il a pas le droit de le lire [:spamafote]
 
t'essayerai pas lancer le truc dans une applet au moins ?


 
oups, bah je lance ca justement dans une applet vu que j'voudrais l'utiliser dans une page htmoul...mais merci de l'info, j'vais tester ca dans une frame

Reply

Marsh Posté le 02-09-2003 à 10:16:05    

ca marche dans une frame, c cool!!!!
mais c koi exactement le probleme avec les applets?

Reply

Marsh Posté le 02-09-2003 à 10:16:05   

Reply

Marsh Posté le 02-09-2003 à 10:23:09    

:pfff:  
 
une applet a des droits réduit pour des raisons évidentes de sécurité => pas d'accès disque, à moins qu'elle soit certifiée.
 
en plus si le but c'est de la diffuser "au grand public", comment tu peux espérer te servir de JAI ? Tu vas leur demander à tous de l'installer ?
 
PS : j'attend mes erreurs de compile... :)


Message édité par benou le 02-09-2003 à 10:54:16

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-09-2003 à 11:48:17    

ouais mais le but, c que les users puissent stocker leurs images sur mon serveur, mais pour eviter qu'elles soient enormes, j'veux justement utiliser cette classe pour les reduire
 
 
PS: j'crois que t'as mal lu, g jamais dit que ca compile pas :o , c juste que ca m'faisait une erreur a l'execution qd j'lancais l'bazar avec une applet

Reply

Marsh Posté le 02-09-2003 à 11:54:27    

nartu elxe a écrit :

J'ai testé ta class mais pour la compiler, j'ai du rajouté quelques try-catch


c'est pas moi qui lit mal, c'est toi qui sait pas que c'est normal des méthodes qui peuvent générer des exceptions [:spamafote]


Message édité par benou le 02-09-2003 à 15:35:31

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-09-2003 à 11:55:29    

nartu elxe a écrit :

ouais mais le but, c que les users puissent stocker leurs images sur mon serveur, mais pour eviter qu'elles soient enormes, j'veux justement utiliser cette classe pour les reduire


il faudra que ton applet soit signée & qu'ils aient JAI d'installé, où que tu leur fasse télécharger les jar mais du coup ce sera moins rapide vu que ca utilisera pas les librairies natives.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-09-2003 à 11:56:02    

ou bien, tu les réduit une fois uploadées sur le serveur ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-09-2003 à 12:43:51    

benou a écrit :


c'est pas moi qui lit mal, c'est toi qui c'est pas que c'est normal des méthodes qui peuvent générer des exceptions [:spamafote]


 
si je le savais pas, j'aurais jamais rajouté de try catch lol

Reply

Marsh Posté le 02-09-2003 à 12:46:03    

benou a écrit :

ou bien, tu les réduit une fois uploadées sur le serveur ...


 
ouais...

Reply

Marsh Posté le 02-09-2003 à 12:51:18    

nartu elxe a écrit :


 
si je le savais pas, j'aurais jamais rajouté de try catch lol


 
ah ah, petit comique :sweat:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 02-09-2003 à 14:20:52    

DarkLord a écrit :


ah ah, petit comique :sweat:


l'humour c'est mieux quand c'est drôle  :pfff:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-09-2003 à 15:49:32    

:sweat:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-09-2003 à 13:14:39    

En fait, j'utilise de l'asp sur mon site
 
j'ai trouvé un code ki redimensionne l'image mais uniquement en pixel:
 

Citation :


<%@ Page Language="VB" Debug="true" %>
<%@import Namespace="System.xml"%>
<%@import Namespace="System.io"%>
 
<script language="VB" runat="server">
Sub redimImage(inImg, inW, inH, inMW, inMH)
  ' Cette function recoit 5 parametres
  ' inImg : Chemin relatif de l'image
  ' inW   : Largeur de l'image
  ' inH   : Hauteur de l'image
  ' inMW  : Largeur maximale
  ' inMH  : Hauteur maximale
  Dim maxWidth, maxHeight, dW, dH, h, w
   
  maxWidth = CInt(inMW)
  maxHeight = CInt(inMH)
  ' Declarations des variables "Nouvelle Taille"
  dW = 0
  dH = 0
  ' On recupere les tailles reelles
  h = CInt(inH) : w = CInt(inW)
  dH = CInt(inH) : dW = CInt(inW)
  ' Si la largeur ou la hauteur depasse la taille maximale
  If h >= maxHeight Or w >= maxWidth Then
    ' Si la largeur et la hauteur depasse la taille maximale
    If h >= maxHeight And w >= maxWidth Then
      ' On cherche la plus grande valeur
      If h > w Then
        dH = maxHeight
        ' On recalcule la taille proportionnellement
        dW = CInt((w * dH) / h)
      Else
        dW = maxWidth
        ' On recalcule la taille proportionnellement
        dH = CInt((h * dW) / w)
      End If
    ElseIf h > maxHeight And w < maxWidth Then
      ' Si la hauteur depasse la taille maximale
      dH = maxHeight
      ' On recalcule la taille proportionnellement
      dW = CInt((w * dH) / h)
    ElseIf h < maxHeight And w > maxWidth Then
      ' Si la largeur depasse la taille maximale
      dW = maxWidth
      ' On recalcule la taille proportionnellement
      dH = CInt((h * dW) / w)
    End If
  End If
  ' On ecrit l'image dans le document
  Response.Write ("<img src=""" & inImg & """ width=""" & dW & """ height=""" & dH & """ border=""0"">" )
End Sub
 
</script>
 
<html>
<head>
<title>Miniatures</title>
</head>
<body>
<%
redimImage ("image/eaec.jpg", 200, 300, 100, 100)
%>
</body>
</html>


 
est-il possible de reduire une image en octet et en pixel en asp?


Message édité par nartu elxe le 09-09-2003 à 14:27:51
Reply

Marsh Posté le 09-09-2003 à 14:28:01    

[:belgarion_cer]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed