知识大全 printscreen读取位图转为jpeg格式输出
Posted 知
篇首语:智者不为愚者谋,勇者不为怯者死。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 printscreen读取位图转为jpeg格式输出相关的知识,希望对你有一定的参考价值。
package screensaver; import java awt *; import java awt image BufferedImage; import java io *; import java util *; import dec jpeg *; import java awt Image; import java awt Toolkit; import java awt image BufferedImage; import java awt image MemoryImageSource; import java io FileInputStream; import java io FileOutputStream; import dec jpeg JPEGCodec; import dec jpeg JPEGImageEncoder; public class ScreenPicSaver MediaTracker tracker = new MediaTracker(new Component() ); public ScreenPicSaver() public Image loadbitmap(String sdir String sfile) //读取 位或 位的位图文件 Image image; System out println( loading: + sdir + sfile); try FileInputStream fs = new FileInputStream(sdir + sfile); int bflen = ; // 字节 BITMAPFILEHEADER byte bf[] = new byte[bflen]; fs read(bf bflen); int bilen = ; // 字节 BITMAPINFOHEADER byte bi[] = new byte[bilen]; fs read(bi bilen); // 解释数据 int nsize = ( ( (int) bf[ ] & xff) < < ) | ( ( (int) bf[ ] & xff) < < ) | ( ( (int) bf[ ] & xff) < < ) | (int) bf[ ] & xff; System out println( File type is : + (char) bf[ ] + (char) bf[ ]); System out println( Size of file is : + nsize); int nbisize = ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( Size of bitmapinfoheader is : + nbisize); int nwidth = ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( Width is : + nwidth); int nheight = ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( Height is : + nheight); int nplanes = ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( Planes is : + nplanes); int nbitcount = ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( BitCount is : + nbitcount); // 查找表明压缩的非零值 int npression = ( ( (int) bi[ ]) < < ) | ( ( (int) bi[ ]) < < ) | ( ( (int) bi[ ]) < < ) | (int) bi[ ]; System out println( Compression is : + npression); int nsizeimage = ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( SizeImage is : + nsizeimage); int nxpm = ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( X Pixels per meter is : + nxpm); int nypm = ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( Y Pixels per meter is : + nypm); int nclrused = ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( Colors used are : + nclrused); int nclrimp = ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | ( ( (int) bi[ ] & xff) < < ) | (int) bi[ ] & xff; System out println( Colors important are : + nclrimp); if (nbitcount == ) // 位格式不包含调色板数据 但扫描行被补足到 // 个字节 int npad = (nsizeimage / nheight) nwidth * ; int ndata[] = new int[nheight * nwidth]; byte brgb[] = new byte[ (nwidth + npad) * * nheight]; fs read(brgb (nwidth + npad) * * nheight); int nindex = ; for (int j = ; j < nheight; j++) for (int i = ; i < nwidth; i++) ndata[nwidth * (nheight j ) + i] = ( & xff) < < | ( ( (int) brgb[nindex + ] & xff) < < ) | ( ( (int) brgb[nindex + ] & xff) < < ) | (int) brgb[nindex] & xff; /** System out println( Encoded Color at ( +i + + j + )is: + nrgb + (R G B)= ( + ( (int) (brgb[ ]) & xff) + + ( (int) brgb[ ] & xff) + + ( (int) brgb[ ] & xff) + ) ); */ nindex += ; nindex += npad; image = Toolkit getDefaultToolkit() createImage (new MemoryImageSource(nwidth nheight ndata nwidth)); else if (nbitcount == ) // 必须确定颜色数 如果 clrsused 参数大于 // 则颜色数由它决定 如果它等于 则根据 // bitsperpixel 计算颜色数 int nNumColors = ; if (nclrused > ) nNumColors = nclrused; else nNumColors = ( & xff) < < nbitcount; System out println( The number of Colors is + nNumColors); // 某些位图不计算 sizeimage 域 请找出 // 这些情况并对它们进行修正 if (nsizeimage == ) nsizeimage = ( ( ( (nwidth * nbitcount) + ) & ~ ) >> ); nsizeimage *= nheight; System out println( nsizeimage (backup) is + nsizeimage); // 读取调色板颜色 int npalette[] = new int[nNumColors]; byte bpalette[] = new byte[nNumColors * ]; fs read(bpalette nNumColors * ); int nindex = ; for (int n = ; n < nNumColors; n++) npalette[n] = ( & xff) < < | ( ( (int) bpalette[nindex + ] & xff) < < ) | ( ( (int) bpalette[nindex + ] & xff) < < ) | (int) bpalette[nindex ] & xff; /**System out println ( Palette Color +n + is: + npalette[n] + (res R G B)= ( + ( (int) (bpalette[nindex + ]) & xff) + + ( (int) (bpalette[nindex + ]) & xff) + + ( (int) bpal cha138/Article/program/Java/JSP/201311/19747相关参考