Changeset 9391


Ignore:
Timestamp:
07/24/07 14:36:34 (5 years ago)
Author:
anp
Message:

transf img2props : traitement du cas ou la src est un dossier

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Jav_CO/com/scenari/s/co/transform/img/HTransformerProps.java

    r9389 r9391  
    5454import com.scenari.s.fw.log.HLogMgr; 
    5555import com.scenari.s.fw.util.xml.HXmlWriterIO; 
     56 
    5657/** 
    5758 * Extrait les propriétés d'une image. 
     
    7071 */ 
    7172public class HTransformerProps extends HTransformer { 
    72     /** unité des valeurs numériques par défaut (px). */ 
    73     public static final String PARAM_UNIT = "unit"; 
    74  
    75     /** resolution: utilise uniquement pour les PNG et GIF */ 
    76     public static final String PARAM_DPI = "dpi"; 
    77  
    78     /** 
    79      *  
    80      * @see com.scenari.s.co.transform.IHTransformer#hTransform(Object, Object, com.scenari.s.co.transform.HTransformParams) 
    81      */ 
    82     public void hTransform(Object pSrc, Object pRes, HTransformParams pParams) throws Exception { 
    83         InputStream vStream; 
    84  
    85         /*System.out.println("pSrc: "+pSrc.);*/ 
    86  
    87         if (pSrc instanceof InputStream) { 
    88             vStream = (InputStream) pSrc; 
    89         } else { 
    90             vStream = new BufferedInputStream(new FileInputStream((File) pSrc)); 
    91         } 
    92  
    93         //Encoding 
    94         Writer vResult = null; 
    95         if (pRes instanceof OutputStream) { 
    96             vResult = new OutputStreamWriter((OutputStream) pRes, "UTF-8"); 
    97         } else if (pRes instanceof File) { 
    98             vResult = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream((File) pRes)), "UTF-8"); 
    99         } else if (pRes instanceof Writer) { 
    100             vResult = (Writer) pRes; 
    101         } 
    102         HXmlWriterIO vXmlWriter = new HXmlWriterIO(vResult); 
    103         try { 
    104             String vUnite = "px"; 
    105             if (pParams.hGetValueParam(PARAM_UNIT) != null) { 
    106                 vUnite = pParams.hGetValueParam(PARAM_UNIT); 
    107             } 
    108  
    109             int vResolution = 72; 
    110             String vResolutionStr = pParams.hGetValueParam(PARAM_DPI); 
    111             if (vResolutionStr != null) { 
    112                 try { 
    113                     vResolution = Integer.parseInt(vResolutionStr); 
    114                 } catch (Exception e) {} 
    115             } 
    116  
    117             ImageInfo oImageInfo = new ImageInfo(); 
    118             oImageInfo.setInput(vStream); // in can be InputStream or RandomAccessFile 
    119             oImageInfo.setDetermineImageNumber(true); // default is false 
    120             oImageInfo.setCollectComments(true); // default is false 
    121             if (!oImageInfo.check()) { 
    122                 System.err.println("Ce format d'image n'est pas supporté"); 
    123                 return; 
    124             } 
    125             /*System.out.println(oImageInfo.getFormatName() + ", " + oImageInfo.getMimeType() +  
    126              ", " + oImageInfo.getWidth() + " x " + oImageInfo.getHeight() + " pixels, " +  
    127              oImageInfo.getBitsPerPixel() + " bits per pixel, " + oImageInfo.getNumberOfImages() + 
    128              " image(s), " + oImageInfo.getNumberOfComments() + " comment(s).");*/ 
    129  
    130             String vValueMimeType = oImageInfo.getMimeType(); 
    131             Integer vValueQ = new Integer(oImageInfo.getPhysicalWidthDpi()); 
    132             if (vValueMimeType == "image/jpeg" || vValueMimeType == "image/pjpeg") { 
    133                 if (vValueQ.floatValue() > 0) vResolution = vValueQ.intValue(); 
    134             } 
    135  
    136             vXmlWriter.hWriteHeaderXml("utf-8"); 
    137  
    138             vXmlWriter.hWriteOpenTag("props"); 
    139  
    140             vXmlWriter.hWriteStartTag("p"); 
    141             vXmlWriter.hWriteAttribut("cd", "qualite"); 
    142             vXmlWriter.hWriteEndOpenTag(); 
    143             vXmlWriter.hWriteText(vValueQ.toString()); 
    144             vXmlWriter.hWriteCloseTag("p"); 
    145  
    146             vXmlWriter.hWriteStartTag("p"); 
    147             vXmlWriter.hWriteAttribut("cd", "mimeType"); 
    148             vXmlWriter.hWriteEndOpenTag(); 
    149             vXmlWriter.hWriteText(vValueMimeType); 
    150             vXmlWriter.hWriteCloseTag("p"); 
    151  
    152             vXmlWriter.hWriteStartTag("p"); 
    153             vXmlWriter.hWriteAttribut("cd", "width"); 
    154             vXmlWriter.hWriteEndOpenTag(); 
    155             float vValueW = oImageInfo.getWidth(); 
    156             if (vUnite != null && vUnite.equals("cm") && vResolution > 0) { 
    157                 vValueW = ImgUtil.cmToPx(vValueW, vResolution); 
    158             } 
    159             Float vTmpW = new Float(vValueW); 
    160             if (vTmpW.floatValue() <= 0) { 
    161                 vXmlWriter.hWriteText("-1");//code d'erreur 
    162             } else { 
    163                 vXmlWriter.hWriteText(vTmpW.toString()); 
    164             } 
    165  
    166             vXmlWriter.hWriteCloseTag("p"); 
    167  
    168             vXmlWriter.hWriteStartTag("p"); 
    169             vXmlWriter.hWriteAttribut("cd", "height"); 
    170             vXmlWriter.hWriteEndOpenTag(); 
    171             float vValueH = oImageInfo.getHeight(); 
    172             if (vUnite != null && vUnite.equals("cm") && vResolution > 0) { 
    173                 vValueH = ImgUtil.cmToPx(vValueH, vResolution); 
    174             } else {// unite par défaut: px 
    175             } 
    176             Float vTmpH = new Float(vValueH); 
    177             if (vTmpH.floatValue() <= 0) { 
    178                 vXmlWriter.hWriteText("-1");//code d'erreur 
    179             } else { 
    180                 vXmlWriter.hWriteText(vTmpH.toString()); 
    181             } 
    182             vXmlWriter.hWriteCloseTag("p"); 
    183  
    184             vXmlWriter.hWriteCloseTag("props"); 
    185  
    186             /* 
    187              RenderedOp vIm = JAI.create("stream", SeekableStream.wrapInputStream(vStream, false)); 
    188              String[] vPropsNames = vIm.getPropertyNames();* 
    189               
    190              HXmlWriterIO vXmlWriter = new HXmlWriterIO(new WriterToUTF8(vResult)); 
    191              vXmlWriter.hWriteHeaderXml("utf-8"); 
    192              vXmlWriter.hWriteOpenTag("props"); 
    193              for (int i = 0; i < vPropsNames.length; i++) { 
    194              vXmlWriter.hWriteStartTag("p"); 
    195              vXmlWriter.hWriteAttribut("cd", vPropsNames[i]); 
    196              vXmlWriter.hWriteEndOpenTag(); 
    197              Object vObj = vIm.getProperty(vPropsNames[i]); 
    198              vXmlWriter.hWriteText(vObj.toString()); 
    199              vXmlWriter.hWriteCloseTag("p"); 
    200              } 
    201              vXmlWriter.hWriteCloseTag("props"); 
    202              vXmlWriter.hClose(); 
    203               
    204              */ 
    205         } catch (Exception e) { 
    206             throw (Exception) HLogMgr.hAddMessage(e, "Echec à l'extraction des propriétés d'une image."); 
    207         } finally { 
    208             try{ 
    209                 vStream.close(); 
    210             }catch (Exception e) { 
    211                 HLogMgr.hPublishException(e); 
    212             } 
    213             try{ 
    214                 vXmlWriter.hClose(); 
    215             }catch (Exception e) { 
    216                 HLogMgr.hPublishException(e); 
    217             } 
    218         } 
    219     } 
    220  
    221     /** 
    222      *  
    223      * @see com.scenari.s.co.transform.IHTransformer#hIsSrcAllowed(java.lang.Class, HTransformParams) 
    224      */ 
    225     public boolean hIsSrcAllowed(Class pClassSrc, HTransformParams pParams) { 
    226         return File.class.isAssignableFrom(pClassSrc) || InputStream.class.isAssignableFrom(pClassSrc); 
    227     } 
    228  
    229     /** 
    230      *  
    231      * @see com.scenari.s.co.transform.IHTransformer#hIsResAllowed(java.lang.Class, HTransformParams) 
    232      */ 
    233     public boolean hIsResAllowed(Class pClassRes, HTransformParams pParams) { 
    234         return File.class.isAssignableFrom(pClassRes) || OutputStream.class.isAssignableFrom(pClassRes) || Writer.class.isAssignableFrom(pClassRes); 
    235     } 
    236  
    237     /** 
    238      *  
    239      * @see com.scenari.s.co.transform.IHTransformer#hGetMimeType(com.scenari.s.co.transform.HTransformParams) 
    240      */ 
    241     public String hGetMimeType(HTransformParams pParams) throws Exception { 
    242         return "text/xml"; 
    243     } 
    244  
    245     /** 
    246      *  
    247      * @see com.scenari.s.co.transform.IHTransformer#hGetFileExtension(com.scenari.s.co.transform.HTransformParams) 
    248      */ 
    249     public String hGetFileExtension(HTransformParams pParams) throws Exception { 
    250         return ".xml"; 
    251     } 
     73        /** unité des valeurs numériques par défaut (px). */ 
     74        public static final String PARAM_UNIT = "unit"; 
     75 
     76        /** resolution: utilise uniquement pour les PNG et GIF */ 
     77        public static final String PARAM_DPI = "dpi"; 
     78 
     79        /** 
     80         *  
     81         * @see com.scenari.s.co.transform.IHTransformer#hTransform(Object, Object, com.scenari.s.co.transform.HTransformParams) 
     82         */ 
     83        public void hTransform(Object pSrc, Object pRes, HTransformParams pParams) throws Exception { 
     84                InputStream vStream; 
     85 
     86                /*System.out.println("pSrc: "+pSrc.);*/ 
     87 
     88                if (pSrc instanceof InputStream) { 
     89                        vStream = (InputStream) pSrc; 
     90                } else { 
     91                        File vSrc = (File) pSrc; 
     92                        if (vSrc.isDirectory()) { 
     93                                //Dossier => on essaye sur fichier dans le dossier avec le même nom. 
     94                                vStream = new BufferedInputStream(new FileInputStream(new File(vSrc, vSrc.getName()))); 
     95                        } else { 
     96                                vStream = new BufferedInputStream(new FileInputStream(vSrc)); 
     97                        } 
     98                } 
     99 
     100                //Encoding 
     101                Writer vResult = null; 
     102                if (pRes instanceof OutputStream) { 
     103                        vResult = new OutputStreamWriter((OutputStream) pRes, "UTF-8"); 
     104                } else if (pRes instanceof File) { 
     105                        vResult = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream((File) pRes)), "UTF-8"); 
     106                } else if (pRes instanceof Writer) { 
     107                        vResult = (Writer) pRes; 
     108                } 
     109                HXmlWriterIO vXmlWriter = new HXmlWriterIO(vResult); 
     110                try { 
     111                        String vUnite = "px"; 
     112                        if (pParams.hGetValueParam(PARAM_UNIT) != null) { 
     113                                vUnite = pParams.hGetValueParam(PARAM_UNIT); 
     114                        } 
     115 
     116                        int vResolution = 72; 
     117                        String vResolutionStr = pParams.hGetValueParam(PARAM_DPI); 
     118                        if (vResolutionStr != null) { 
     119                                try { 
     120                                        vResolution = Integer.parseInt(vResolutionStr); 
     121                                } catch (Exception e) { 
     122                                } 
     123                        } 
     124 
     125                        ImageInfo oImageInfo = new ImageInfo(); 
     126                        oImageInfo.setInput(vStream); // in can be InputStream or RandomAccessFile 
     127                        oImageInfo.setDetermineImageNumber(true); // default is false 
     128                        oImageInfo.setCollectComments(true); // default is false 
     129                        if (!oImageInfo.check()) { 
     130                                System.err.println("Ce format d'image n'est pas supporté"); 
     131                                return; 
     132                        } 
     133                        /*System.out.println(oImageInfo.getFormatName() + ", " + oImageInfo.getMimeType() +  
     134                         ", " + oImageInfo.getWidth() + " x " + oImageInfo.getHeight() + " pixels, " +  
     135                         oImageInfo.getBitsPerPixel() + " bits per pixel, " + oImageInfo.getNumberOfImages() + 
     136                         " image(s), " + oImageInfo.getNumberOfComments() + " comment(s).");*/ 
     137 
     138                        String vValueMimeType = oImageInfo.getMimeType(); 
     139                        Integer vValueQ = new Integer(oImageInfo.getPhysicalWidthDpi()); 
     140                        if (vValueMimeType == "image/jpeg" || vValueMimeType == "image/pjpeg") { 
     141                                if (vValueQ.floatValue() > 0) vResolution = vValueQ.intValue(); 
     142                        } 
     143 
     144                        vXmlWriter.hWriteHeaderXml("utf-8"); 
     145 
     146                        vXmlWriter.hWriteOpenTag("props"); 
     147 
     148                        vXmlWriter.hWriteStartTag("p"); 
     149                        vXmlWriter.hWriteAttribut("cd", "qualite"); 
     150                        vXmlWriter.hWriteEndOpenTag(); 
     151                        vXmlWriter.hWriteText(vValueQ.toString()); 
     152                        vXmlWriter.hWriteCloseTag("p"); 
     153 
     154                        vXmlWriter.hWriteStartTag("p"); 
     155                        vXmlWriter.hWriteAttribut("cd", "mimeType"); 
     156                        vXmlWriter.hWriteEndOpenTag(); 
     157                        vXmlWriter.hWriteText(vValueMimeType); 
     158                        vXmlWriter.hWriteCloseTag("p"); 
     159 
     160                        vXmlWriter.hWriteStartTag("p"); 
     161                        vXmlWriter.hWriteAttribut("cd", "width"); 
     162                        vXmlWriter.hWriteEndOpenTag(); 
     163                        float vValueW = oImageInfo.getWidth(); 
     164                        if (vUnite != null && vUnite.equals("cm") && vResolution > 0) { 
     165                                vValueW = ImgUtil.cmToPx(vValueW, vResolution); 
     166                        } 
     167                        Float vTmpW = new Float(vValueW); 
     168                        if (vTmpW.floatValue() <= 0) { 
     169                                vXmlWriter.hWriteText("-1");//code d'erreur 
     170                        } else { 
     171                                vXmlWriter.hWriteText(vTmpW.toString()); 
     172                        } 
     173 
     174                        vXmlWriter.hWriteCloseTag("p"); 
     175 
     176                        vXmlWriter.hWriteStartTag("p"); 
     177                        vXmlWriter.hWriteAttribut("cd", "height"); 
     178                        vXmlWriter.hWriteEndOpenTag(); 
     179                        float vValueH = oImageInfo.getHeight(); 
     180                        if (vUnite != null && vUnite.equals("cm") && vResolution > 0) { 
     181                                vValueH = ImgUtil.cmToPx(vValueH, vResolution); 
     182                        } else {// unite par défaut: px 
     183                        } 
     184                        Float vTmpH = new Float(vValueH); 
     185                        if (vTmpH.floatValue() <= 0) { 
     186                                vXmlWriter.hWriteText("-1");//code d'erreur 
     187                        } else { 
     188                                vXmlWriter.hWriteText(vTmpH.toString()); 
     189                        } 
     190                        vXmlWriter.hWriteCloseTag("p"); 
     191 
     192                        vXmlWriter.hWriteCloseTag("props"); 
     193 
     194                        /* 
     195                         RenderedOp vIm = JAI.create("stream", SeekableStream.wrapInputStream(vStream, false)); 
     196                         String[] vPropsNames = vIm.getPropertyNames();* 
     197                          
     198                         HXmlWriterIO vXmlWriter = new HXmlWriterIO(new WriterToUTF8(vResult)); 
     199                         vXmlWriter.hWriteHeaderXml("utf-8"); 
     200                         vXmlWriter.hWriteOpenTag("props"); 
     201                         for (int i = 0; i < vPropsNames.length; i++) { 
     202                         vXmlWriter.hWriteStartTag("p"); 
     203                         vXmlWriter.hWriteAttribut("cd", vPropsNames[i]); 
     204                         vXmlWriter.hWriteEndOpenTag(); 
     205                         Object vObj = vIm.getProperty(vPropsNames[i]); 
     206                         vXmlWriter.hWriteText(vObj.toString()); 
     207                         vXmlWriter.hWriteCloseTag("p"); 
     208                         } 
     209                         vXmlWriter.hWriteCloseTag("props"); 
     210                         vXmlWriter.hClose(); 
     211                          
     212                         */ 
     213                } catch (Exception e) { 
     214                        throw (Exception) HLogMgr.hAddMessage(e, "Echec à l'extraction des propriétés d'une image."); 
     215                } finally { 
     216                        try { 
     217                                vStream.close(); 
     218                        } catch (Exception e) { 
     219                                HLogMgr.hPublishException(e); 
     220                        } 
     221                        try { 
     222                                vXmlWriter.hClose(); 
     223                        } catch (Exception e) { 
     224                                HLogMgr.hPublishException(e); 
     225                        } 
     226                } 
     227        } 
     228 
     229        /** 
     230         *  
     231         * @see com.scenari.s.co.transform.IHTransformer#hIsSrcAllowed(java.lang.Class, HTransformParams) 
     232         */ 
     233        public boolean hIsSrcAllowed(Class pClassSrc, HTransformParams pParams) { 
     234                return File.class.isAssignableFrom(pClassSrc) || InputStream.class.isAssignableFrom(pClassSrc); 
     235        } 
     236 
     237        /** 
     238         *  
     239         * @see com.scenari.s.co.transform.IHTransformer#hIsResAllowed(java.lang.Class, HTransformParams) 
     240         */ 
     241        public boolean hIsResAllowed(Class pClassRes, HTransformParams pParams) { 
     242                return File.class.isAssignableFrom(pClassRes) || OutputStream.class.isAssignableFrom(pClassRes) || Writer.class.isAssignableFrom(pClassRes); 
     243        } 
     244 
     245        /** 
     246         *  
     247         * @see com.scenari.s.co.transform.IHTransformer#hGetMimeType(com.scenari.s.co.transform.HTransformParams) 
     248         */ 
     249        public String hGetMimeType(HTransformParams pParams) throws Exception { 
     250                return "text/xml"; 
     251        } 
     252 
     253        /** 
     254         *  
     255         * @see com.scenari.s.co.transform.IHTransformer#hGetFileExtension(com.scenari.s.co.transform.HTransformParams) 
     256         */ 
     257        public String hGetFileExtension(HTransformParams pParams) throws Exception { 
     258                return ".xml"; 
     259        } 
    252260 
    253261} 
Note: See TracChangeset for help on using the changeset viewer.