知识大全 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

相关参考