J2ME图片缩放

 

这个函数是我以前在网上搜罗到的,且不谈效果,性能什么的。只觉得它非常好用。
用了很长时间,可惜不知道是谁。真要谢谢这位作者了。
这个函数使用了midp2.0的getRGB()函数,效率不错,基本上没什么可优化的了。

  1. public static Image ZoomImage(Image src, int desW, int desH) {
  2.   Image desImg = null;
  3.   int srcW = src.getWidth(); // 原始图像宽
  4.   int srcH = src.getHeight(); // 原始图像高
  5.   int[] srcBuf = new int[srcW * srcH]; // 原始图片像素信息缓存
  6.   src.getRGB(srcBuf, 0, srcW, 0, 0, srcW, srcH);
  7.   // 计算插值表
  8.   int[] tabY = new int[desH];
  9.   int[] tabX = new int[desW];
  10.   int sb = 0;
  11.   int db = 0;
  12.   int tems = 0;
  13.   int temd = 0;
  14.   int distance = srcH > desH ? srcH : desH;
  15.   for (int i = 0; i <= distance; i++) { /* 垂直方向 */
  16.    tabY[db] = sb;
  17.    tems += srcH;
  18.    temd += desH;
  19.    if (tems > distance) {
  20.     tems -= distance;
  21.     sb++;
  22.    }
  23.    if (temd > distance) {
  24.     temd -= distance;
  25.     db++;
  26.    }
  27.   }
  28.   sb = 0;
  29.   db = 0;
  30.   tems = 0;
  31.   temd = 0;
  32.   distance = srcW > desW ? srcW : desW;
  33.   for (int i = 0; i <= distance; i++) { /* 水平方向 */
  34.    tabX[db] = (short) sb;
  35.    tems += srcW;
  36.    temd += desW;
  37.    if (tems > distance) {
  38.     tems -= distance;
  39.     sb++;
  40.    }
  41.    if (temd > distance) {
  42.     temd -= distance;
  43.     db++;
  44.    }
  45.   }
  46.   // 生成放大缩小后图形像素buf
  47.   int[] desBuf = new int[desW * desH];
  48.   int dx = 0;
  49.   int dy = 0;
  50.   int sy = 0;
  51.   int oldy = -1;
  52.   for (int i = 0; i < desH; i++) {
  53.    if (oldy == tabY[i]) {
  54.     System.arraycopy(desBuf, dy - desW, desBuf, dy, desW);
  55.    } else {
  56.     dx = 0;
  57.     for (int j = 0; j < desW; j++) {
  58.      desBuf[dy + dx] = srcBuf[sy + tabX[j]];
  59.      dx++;
  60.     }
  61.     sy += (tabY[i] - oldy) * srcW;
  62.    }
  63.    oldy = tabY[i];
  64.    dy += desW;
  65.   }
  66.   // 生成图片
  67.   desImg = Image.createRGBImage(desBuf, desW, desH, false);
  68.   return desImg;
  69.  }

 

 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值