コード例 #1
0
 /**
  * 创建灰度图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
  *
  * @param pic 源图片
  * @param srcX 处理块在源图片中的X偏移
  * @param srcY 处理块在源图片中的Y偏移
  * @param w 处理块宽度
  * @param h 处理块高度
  * @return
  */
 public static Image createGray(Image pic, int srcX, int srcY, int w, int h) {
   int[] rgbData = new int[w * h];
   pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
   for (int i = rgbData.length - 1; i >= 0; --i) {
     rgbData[i] = RenderUtil.turnGray(rgbData[i]);
   }
   return Image.createRGBImage(rgbData, w, h, true);
 }
コード例 #2
0
 /**
  * 绘制灰度变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
  *
  * @param g
  * @param pic 源图片
  * @param srcX 绘制块在源图片的X偏移
  * @param srcY 绘制块在源图片的Y偏移
  * @param w 绘制宽度
  * @param h 绘制高度
  * @param destX 显示的X坐标
  * @param destY 显示的Y坐标
  */
 public static void drawGray(
     SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY) {
   int[] rgbData = new int[w * h];
   Image grayImg;
   pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
   for (int i = rgbData.length - 1; i >= 0; --i) {
     rgbData[i] = RenderUtil.turnGray(rgbData[i]);
   }
   grayImg = Image.createRGBImage(rgbData, w, h, true);
   g.drawImage(grayImg, destX, destY, 0);
 }
コード例 #3
0
 /**
  * 逐行绘制灰度变换图像(J2ME中只支持PNG格式图片),内存不够时调用次方法,绘制效率偏低
  *
  * @param g
  * @param pic 源图片
  * @param srcX 绘制块在源图片的X偏移
  * @param srcY 绘制块在源图片的Y偏移
  * @param w 绘制宽度
  * @param h 绘制高度
  * @param destX 显示的X坐标
  * @param destY 显示的Y坐标
  */
 public static void drawGrayByLine(
     SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY) {
   int[] rgbData = new int[w];
   for (int hd = h - 1; hd >= 0; --hd) {
     pic.getRGB(rgbData, 0, w, srcX, srcY + hd, w, 1);
     for (int i = rgbData.length - 1; i >= 0; --i) {
       rgbData[i] = RenderUtil.turnGray(rgbData[i]);
     }
     g.drawRGB(rgbData, 0, w, destX, destY + hd, w, 1, true);
   }
 }