1 50 51 package org.openlaszlo.iv.flash.util; 52 53 import org.openlaszlo.iv.flash.api.*; 54 import org.openlaszlo.iv.flash.api.image.*; 55 import java.io.*; 56 57 62 public class JPEGHelper { 63 64 public static final int M_SOF0 = 0xC0; 65 public static final int M_SOF1 = 0xC1; 66 public static final int M_SOF2 = 0xC2; 67 public static final int M_SOF3 = 0xC3; 68 public static final int M_SOF5 = 0xC5; 69 public static final int M_SOF6 = 0xC6; 70 public static final int M_SOF7 = 0xC7; 71 public static final int M_SOF9 = 0xC9; 72 public static final int M_SOF10 = 0xCA; 73 public static final int M_SOF11 = 0xCB; 74 public static final int M_SOF13 = 0xCD; 75 public static final int M_SOF14 = 0xCE; 76 public static final int M_SOF15 = 0xCF; 77 public static final int M_SOI = 0xD8; 78 public static final int M_EOI = 0xD9; 79 public static final int M_SOS = 0xDA; 80 public static final int M_APP14 = 0xEE; 81 82 public static JPEGBitmap.JPEGInfo getInfo( byte[] b, int p, int end ) { 83 if( Util.getUByte(b[p])!=0xff || Util.getUByte(b[p+1])!=M_SOI ) return null; 84 85 JPEGBitmap.JPEGInfo info = new JPEGBitmap.JPEGInfo(); 86 info.type = 1; 88 89 p += 2; while( p < end ) { 92 if( Util.getUByte(b[p]) == 0xff ) { 93 int id = Util.getUByte(b[p+1]); 94 int len = Util.getUWord(b[p+3], b[p+2]); 95 switch( id ) { 96 case M_EOI: 97 return info; case M_SOF0: 99 case M_SOF1: 100 case M_SOF3: 101 case M_SOF5: 102 case M_SOF7: 103 case M_SOF9: 104 case M_SOF11: 105 case M_SOF13: 106 case M_SOF15: 107 info.type = 0; 109 case M_SOF2: 111 case M_SOF6: 112 case M_SOF10: 113 case M_SOF14: { 114 info.precision = b[p+4]; 115 info.height = Util.getUWord(b[p+6], b[p+5]); 116 info.width = Util.getUWord(b[p+8], b[p+7]); 117 info.num_comps = Util.getUByte(b[p+9]); 118 return info; 122 } 123 } 124 p += len+2; 125 } else { 126 p++; 127 } 128 } 129 130 return info; 131 } 132 } 133 | Popular Tags |