Changeset 9391
- Timestamp:
- 07/24/07 14:36:34 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Jav_CO/com/scenari/s/co/transform/img/HTransformerProps.java
r9389 r9391 54 54 import com.scenari.s.fw.log.HLogMgr; 55 55 import com.scenari.s.fw.util.xml.HXmlWriterIO; 56 56 57 /** 57 58 * Extrait les propriétés d'une image. … … 70 71 */ 71 72 public 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 } 252 260 253 261 }
Note: See TracChangeset
for help on using the changeset viewer.