1 29 30 package com.caucho.quercus.lib; 31 32 import com.caucho.quercus.QuercusException; 33 import com.caucho.quercus.annotation.Optional; 34 import com.caucho.quercus.annotation.Reference; 35 import com.caucho.quercus.env.BooleanValue; 36 import com.caucho.quercus.env.Env; 37 import com.caucho.quercus.env.LongValue; 38 import com.caucho.quercus.env.Value; 39 import com.caucho.quercus.module.AbstractQuercusModule; 40 import com.caucho.util.L10N; 41 import com.caucho.vfs.Path; 42 43 import javax.imageio.ImageIO ; 44 import javax.imageio.ImageReader ; 45 import java.io.IOException ; 46 import java.util.Iterator ; 47 48 49 52 public class ExifModule extends AbstractQuercusModule { 53 private static final L10N L = new L10N(ExifModule.class); 54 55 58 public static Value exif_read_data(Env env, Path file, 59 @Optional String sections, 60 @Optional boolean arrays, 61 @Optional boolean thumbs) 62 { 63 return BooleanValue.FALSE; 64 } 65 66 69 public static Value read_exif_data(Env env, Path file, 70 @Optional String sections, 71 @Optional boolean arrays, 72 @Optional boolean thumbs) 73 { 74 return exif_read_data(env, file, sections, arrays, thumbs); 75 } 76 77 85 public static Value exif_thumbnail(Env env, Path file, 86 @Optional @Reference int width, 87 @Optional @Reference int height, 88 @Optional @Reference int imageType) 89 { 90 return BooleanValue.FALSE; 91 } 92 93 96 public static String exif_tagname(String index) 97 { 98 return null; 99 } 100 101 104 public static Value exif_imagetype(Env env, Path file) 105 { 106 try { 107 Iterator it = ImageIO.getImageReaders(file.openRead()); 108 if (!it.hasNext()) 109 return BooleanValue.FALSE; 110 ImageReader imageReader = (ImageReader )it.next(); 111 if (it.hasNext()) 112 throw new QuercusException("ImageIO returned two ImageReaders:\n "+ 113 imageReader+"\n "+it.next()); 114 String formatName = imageReader.getFormatName(); 115 if (formatName.equals("jpeg") || formatName.equals("jpg")) 116 return LongValue.create(ImageModule.IMAGETYPE_JPG); 117 if (formatName.equals("gif")) 118 return LongValue.create(ImageModule.IMAGETYPE_GIF); 119 if (formatName.equals("png")) 120 return LongValue.create(ImageModule.IMAGETYPE_PNG); 121 if (formatName.equals("swf")) 122 return LongValue.create(ImageModule.IMAGETYPE_SWF); 123 if (formatName.equals("psd")) 124 return LongValue.create(ImageModule.IMAGETYPE_PSD); 125 if (formatName.equals("bmp")) 126 return LongValue.create(ImageModule.IMAGETYPE_BMP); 127 if (formatName.equals("tiff")) 128 return LongValue.create(ImageModule.IMAGETYPE_TIFF_II); 129 134 if (formatName.equals("jpc")) 135 return LongValue.create(ImageModule.IMAGETYPE_JPC); 136 if (formatName.equals("jp2")) 137 return LongValue.create(ImageModule.IMAGETYPE_JP2); 138 if (formatName.equals("jpf")) 139 return LongValue.create(ImageModule.IMAGETYPE_JPX); 140 if (formatName.equals("jb2")) 141 return LongValue.create(ImageModule.IMAGETYPE_JB2); 142 if (formatName.equals("swc")) 143 return LongValue.create(ImageModule.IMAGETYPE_SWC); 144 if (formatName.equals("iff")) 145 return LongValue.create(ImageModule.IMAGETYPE_IFF); 146 if (formatName.equals("wbmp")) 147 return LongValue.create(ImageModule.IMAGETYPE_WBMP); 148 if (formatName.equals("xbm")) 149 return LongValue.create(ImageModule.IMAGETYPE_XBM); 150 env.warning(L.l("ImageIO returned unknown image type: " + formatName)); 151 return BooleanValue.FALSE; 152 } 153 catch (IOException e) 154 { 155 throw new QuercusException(e); 156 } 157 } 158 159 160 161 } 162 163 | Popular Tags |