J2me图片缩放

分享下着图片缩放的方法,不过暂时无法支持所有机型,低端机还是有待考证。估计内存吃不消...

     像NOKIA N7610 这个手机上使用这个方法,图片就是一个素色区域,无法正常显示。
     便于理解PS下:手机上Image其实就是一个像素一个像素的话上去,理解这个就不难想到其相关的方法的原理了。
复制到剪贴板   Java代码
  1. /**
  2. *
  3. * @param src
  4. * 需要变换的图片 图片变换比例 scales1:scales2
  5. * @param scales1
  6. * 新图片
  7. * @param scales2
  8. * 旧图片
  9. * @return
  10. */
  11. public Image scaleImage(Image src, int scales1, int scales2) {
  12. return transImage(src, src.getWidth() * scales1 / scales2, src
  13. .getHeight()
  14. * scales1 / scales2);
  15. }
  16. /**
  17. *
  18. * @param src
  19. * 需要变换的图片
  20. * @param w
  21. * 要变换的宽
  22. * @param h
  23. * 要变化的高
  24. * @return
  25. */
  26. public Image transImage(Image src, int w, int h) {
  27. int srcW = src.getWidth();// 图片的宽度
  28. int srcH = src.getHeight();// 图片的高度
  29. int dstW = w, dstH = h;
  30. Image tmp = Image.createImage(dstW, srcH); // 申请个宽为dstW高为srcH的图片空间
  31. Graphics g = tmp.getGraphics();
  32. int scale = 16;
  33. int delta = (srcW << scale) / dstW;// 扫描长度
  34. int pos = delta / 2;// 扫描位置
  35. for (int x = 0; x < dstW; x++) {
  36. g.setClip(x, 0, 1, srcH);
  37. g.drawImage(src, x - (pos >> scale), 0, Graphics.LEFT
  38. | Graphics.TOP);
  39. pos += delta;
  40. }
  41. Image dst = Image.createImage(dstW, dstH);
  42. g = dst.getGraphics();
  43. delta = (srcH << scale) / dstH;
  44. pos = delta / 2;
  45. for (int y = 0; y < dstH; y++) {
  46. g.setClip(0, y, dstW, 1);
  47. g.drawImage(tmp, 0, y - (pos >> scale), Graphics.LEFT
  48. | Graphics.TOP);
  49. pos += delta;
  50. }
  51. return dst;
  52. }

编辑本段 回目录 J2ME 渐变色的处理方法

      基于MIDP2.0 CLDC1.0。是我自己一直在用的一个方法,基本机型都是支持的。只要在paint调用即可

复制到剪贴板   Java代码
  1. private static int[] retrieveRGBComponent(int color) {
  2. int[] rgb = new int[3];
  3. rgb[0] = (color & 0x00ff0000) >> 16;
  4. rgb[1] = (color & 0x0000ff00) >> 8;
  5. rgb[2] = (color & 0x000000ff);
  6. return rgb;
  7. }
  8. private static int[] generateTransitionalColor(int color1, int color2,
  9. int steps) {
  10. int[] color1RGB = retrieveRGBComponent(color1);
  11. int[] color2RGB = retrieveRGBComponent(color2);
  12. if (steps < 3 || color1RGB == null || color2RGB == null)
  13. return null;
  14. int[] colors = new int[steps];
  15. colors[0] = color1;
  16. colors[colors.length - 1] = color2;
  17. steps = steps - 2;
  18. int redDiff = color2RGB[0] - color1RGB[0];
  19. int greenDiff = color2RGB[1] - color1RGB[1];
  20. int blueDiff = color2RGB[2] - color1RGB[2];
  21. // from the second to the last second.
  22. for (int i = 1; i < colors.length - 1; i++) {
  23. colors[i] = generateFromRGBComponent(new int[] {
  24. color1RGB[0] + redDiff * i / steps,
  25. color1RGB[1] + greenDiff * i / steps,
  26. color1RGB[2] + blueDiff * i / steps });
  27. }
  28. return colors;
  29. }
  30. private static int generateFromRGBComponent(int[] rgb) {
  31. if (rgb == null || rgb.length != 3 || rgb[0] < 0 || rgb[0] > 255
  32. || rgb[1] < 0 || rgb[1] > 255 || rgb[2] < 0 || rgb[2] > 255)
  33. return 0xfffff;
  34. return rgb[0] << 16 | rgb[1] << 8 | rgb[2];
  35. }
  36. /**
  37. *
  38. * @param g
  39. * @param x
  40. *            起始X
  41. * @param y
  42. *            起始Y
  43. * @param width
  44. *            宽度
  45. * @param height
  46. *            高度
  47. * @param TransStart
  48. *            渐变开始颜色
  49. * @param TransEnd
  50. *            渐变结束颜色
  51. */
  52. public void drawSelectedBackground(Graphics g, int x, int y, int width,
  53. int height, int TransStart, int TransEnd) {
  54. // 这样写是从左到右渐变
  55. // int[] line = generateTransitionalColor(TextShade, TransEnd, width);
  56. // Image lineImg = Image.createRGBImage(line, line.length, 1, false);
  57. // for (int i = 0; i < height; i++) {
  58. // g.drawImage(lineImg, x, y + i, Graphics.LEFT | Graphics.TOP);
  59. // }
  60. // 下面的写法是从上到下渐变
  61. int[] line = generateTransitionalColor(TransStart, TransEnd, height);
  62. Image lineImg = Image.createRGBImage(line, 1, line.length, false);
  63. for (int i = 0; i < width; i++) {
  64. g.drawImage(lineImg, x + i, y, Graphics.LEFT | Graphics.TOP);
  65. }
  66. }

J2me图片缩放与渐变色源码相关推荐

  1. PhotoView图片缩放控件源码浅析(一)

    本文参考自http://www.tuicool.com/articles/ea2ANjm 简介 PhotoView属性:  可以用于查看图片,并对图片进行拖动缩放,拖动过程中不会出现边缘空白:  双击 ...

  2. python实战===图片转换为字符的源码(转)

    #cmd执行命令为>>> python xx.py pic.png#-*- coding:utf-8 -*-from PIL import Image import argparse ...

  3. Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理

    Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录

  4. 微信小程序:图片拼图小程序源码

    该款小程序支持多种流量主 另外支持多种图形模板制作切割 另外也支持长图合成等功能 安装简单,新手容易上手,具体就不多说了大家自行研究吧! 小程序源码下载地址: 微信小程序:图片拼图小程序源码-小程序文 ...

  5. 一款精美图片在图片压缩网站HTML源码

    介绍: 一款精美图片在图片压缩网站HTML源码 一个精美的在线图片压缩网站,原本源代码引用了一个外国js站点,现js本地化访问速度更快. 网盘下载地址: http://kekewl.net/Cs8Fy ...

  6. Android 图片裁剪 (附源码)

    Android 图片裁剪 前言 正文 一.创建并配置项目 二.权限申请 三.获取图片Uri 四.图片裁剪 五.源码 尾声 运行效果图 前言   图片裁剪是对图片进行区域选定,然后裁剪选定的区域,形成一 ...

  7. java freemark导出word (模板、单张图片、多张图片源码)

    java freemark导出word (模板.单张图片.多张图片源码) 首先模板设置 代码编辑 设置word只读.全部 环境设置.jar包 模板设置 ** 设置模板然后另存为 这里一定要选择对xml ...

  8. Volley 图片加载相关源码解析

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47721631: 本文出自:[张鸿洋的博客] 一 概述 最近在完善图片加载方面的 ...

  9. 批量图片生成pdf C#源码

    下载链接:图片生成pdf C#源码 把批量图片生成pdf 批量选择 改变图片顺序 图片的缩小预览 自定义要生成的pdf 可以按原始尺寸 可以按长.宽的指定大小按比例绽放 或者按照指定的尺寸如800*6 ...

最新文章

  1. C语言程序设计第一次作业
  2. Hadoop2.7.3完全分布式搭建
  3. 编码实现Spring 利用@Resource注解实现bean的注入,xml实现基本数据类型的注入
  4. 一个基于docker的bedrock minecraft PE 服务器
  5. AI新浪潮:截止2022年,全球74%的计算将来自端侧
  6. 小牛照片恢复软件_电脑移动硬盘U盘数据恢复SD卡照片文件软件修复开盘远程维修服务...
  7. 使用Hibernate编写通用数据库操作代码
  8. iptables详解(13):iptables动作总结之二
  9. Sunisoft.IrisSkin.SkinEngine 设置winform皮肤
  10. cron计划任务的介绍
  11. html 表格_HTML------表格
  12. Android Intent常用方法详细介绍,显示Intent,隐式Intent,调用浏览器,拨号,发短信,传递数据
  13. 解析内、外职业发展规划秘诀
  14. 计算机电路基础实验一仪器使用,计算机电路基础(1)实验.pdf
  15. Linux运维的黑客之路
  16. Docker设置容器CPU、memory、磁盘IO资源限制
  17. 如何用BabeLua运行Lua代码
  18. EF migration conflicted with foreign key constraint
  19. python 游戏引擎 cocos2d_2.2 完成一个Cocos2d游戏程序代码
  20. java 识别图片 边框_atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本...

热门文章

  1. python用Levenshtein计算文本相似度(附带所有个人对函数的理解)
  2. Java学习篇十——关于方法的定义和使用
  3. 基于JAVA音乐网站的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  4. ZXing二维码介绍
  5. 路由器不同类型的内存
  6. dell服务器 指示灯_戴尔R710服务器硬盘出现告警(绿黄灯闪),解决方法
  7. QTranslate 3.1.1:整合7种在线翻译的小工具
  8. MFC程序中获取实时汇率(用于汇率转换功能)
  9. css样式 三种引入方式 选择器 常用属性:背景属性 字体属性 边框属性 内间距 外间距 盒子模型
  10. HotSpot 源代码编译