J2me图片缩放与渐变色源码
J2me图片缩放
分享下着图片缩放的方法,不过暂时无法支持所有机型,低端机还是有待考证。估计内存吃不消...
- /**
- *
- * @param src
- * 需要变换的图片 图片变换比例 scales1:scales2
- * @param scales1
- * 新图片
- * @param scales2
- * 旧图片
- * @return
- */
- public Image scaleImage(Image src, int scales1, int scales2) {
- return transImage(src, src.getWidth() * scales1 / scales2, src
- .getHeight()
- * scales1 / scales2);
- }
- /**
- *
- * @param src
- * 需要变换的图片
- * @param w
- * 要变换的宽
- * @param h
- * 要变化的高
- * @return
- */
- public Image transImage(Image src, int w, int h) {
- int srcW = src.getWidth();// 图片的宽度
- int srcH = src.getHeight();// 图片的高度
- int dstW = w, dstH = h;
- Image tmp = Image.createImage(dstW, srcH); // 申请个宽为dstW高为srcH的图片空间
- Graphics g = tmp.getGraphics();
- int scale = 16;
- int delta = (srcW << scale) / dstW;// 扫描长度
- int pos = delta / 2;// 扫描位置
- for (int x = 0; x < dstW; x++) {
- g.setClip(x, 0, 1, srcH);
- g.drawImage(src, x - (pos >> scale), 0, Graphics.LEFT
- | Graphics.TOP);
- pos += delta;
- }
- Image dst = Image.createImage(dstW, dstH);
- g = dst.getGraphics();
- delta = (srcH << scale) / dstH;
- pos = delta / 2;
- for (int y = 0; y < dstH; y++) {
- g.setClip(0, y, dstW, 1);
- g.drawImage(tmp, 0, y - (pos >> scale), Graphics.LEFT
- | Graphics.TOP);
- pos += delta;
- }
- return dst;
- }
编辑本段 回目录 J2ME 渐变色的处理方法
- private static int[] retrieveRGBComponent(int color) {
- int[] rgb = new int[3];
- rgb[0] = (color & 0x00ff0000) >> 16;
- rgb[1] = (color & 0x0000ff00) >> 8;
- rgb[2] = (color & 0x000000ff);
- return rgb;
- }
- private static int[] generateTransitionalColor(int color1, int color2,
- int steps) {
- int[] color1RGB = retrieveRGBComponent(color1);
- int[] color2RGB = retrieveRGBComponent(color2);
- if (steps < 3 || color1RGB == null || color2RGB == null)
- return null;
- int[] colors = new int[steps];
- colors[0] = color1;
- colors[colors.length - 1] = color2;
- steps = steps - 2;
- int redDiff = color2RGB[0] - color1RGB[0];
- int greenDiff = color2RGB[1] - color1RGB[1];
- int blueDiff = color2RGB[2] - color1RGB[2];
- // from the second to the last second.
- for (int i = 1; i < colors.length - 1; i++) {
- colors[i] = generateFromRGBComponent(new int[] {
- color1RGB[0] + redDiff * i / steps,
- color1RGB[1] + greenDiff * i / steps,
- color1RGB[2] + blueDiff * i / steps });
- }
- return colors;
- }
- private static int generateFromRGBComponent(int[] rgb) {
- if (rgb == null || rgb.length != 3 || rgb[0] < 0 || rgb[0] > 255
- || rgb[1] < 0 || rgb[1] > 255 || rgb[2] < 0 || rgb[2] > 255)
- return 0xfffff;
- return rgb[0] << 16 | rgb[1] << 8 | rgb[2];
- }
- /**
- *
- * @param g
- * @param x
- * 起始X
- * @param y
- * 起始Y
- * @param width
- * 宽度
- * @param height
- * 高度
- * @param TransStart
- * 渐变开始颜色
- * @param TransEnd
- * 渐变结束颜色
- */
- public void drawSelectedBackground(Graphics g, int x, int y, int width,
- int height, int TransStart, int TransEnd) {
- // 这样写是从左到右渐变
- // int[] line = generateTransitionalColor(TextShade, TransEnd, width);
- // Image lineImg = Image.createRGBImage(line, line.length, 1, false);
- // for (int i = 0; i < height; i++) {
- // g.drawImage(lineImg, x, y + i, Graphics.LEFT | Graphics.TOP);
- // }
- // 下面的写法是从上到下渐变
- int[] line = generateTransitionalColor(TransStart, TransEnd, height);
- Image lineImg = Image.createRGBImage(line, 1, line.length, false);
- for (int i = 0; i < width; i++) {
- g.drawImage(lineImg, x + i, y, Graphics.LEFT | Graphics.TOP);
- }
- }
J2me图片缩放与渐变色源码相关推荐
- PhotoView图片缩放控件源码浅析(一)
本文参考自http://www.tuicool.com/articles/ea2ANjm 简介 PhotoView属性: 可以用于查看图片,并对图片进行拖动缩放,拖动过程中不会出现边缘空白: 双击 ...
- python实战===图片转换为字符的源码(转)
#cmd执行命令为>>> python xx.py pic.png#-*- coding:utf-8 -*-from PIL import Image import argparse ...
- Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理
Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录
- 微信小程序:图片拼图小程序源码
该款小程序支持多种流量主 另外支持多种图形模板制作切割 另外也支持长图合成等功能 安装简单,新手容易上手,具体就不多说了大家自行研究吧! 小程序源码下载地址: 微信小程序:图片拼图小程序源码-小程序文 ...
- 一款精美图片在图片压缩网站HTML源码
介绍: 一款精美图片在图片压缩网站HTML源码 一个精美的在线图片压缩网站,原本源代码引用了一个外国js站点,现js本地化访问速度更快. 网盘下载地址: http://kekewl.net/Cs8Fy ...
- Android 图片裁剪 (附源码)
Android 图片裁剪 前言 正文 一.创建并配置项目 二.权限申请 三.获取图片Uri 四.图片裁剪 五.源码 尾声 运行效果图 前言 图片裁剪是对图片进行区域选定,然后裁剪选定的区域,形成一 ...
- java freemark导出word (模板、单张图片、多张图片源码)
java freemark导出word (模板.单张图片.多张图片源码) 首先模板设置 代码编辑 设置word只读.全部 环境设置.jar包 模板设置 ** 设置模板然后另存为 这里一定要选择对xml ...
- Volley 图片加载相关源码解析
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47721631: 本文出自:[张鸿洋的博客] 一 概述 最近在完善图片加载方面的 ...
- 批量图片生成pdf C#源码
下载链接:图片生成pdf C#源码 把批量图片生成pdf 批量选择 改变图片顺序 图片的缩小预览 自定义要生成的pdf 可以按原始尺寸 可以按长.宽的指定大小按比例绽放 或者按照指定的尺寸如800*6 ...
最新文章
- C语言程序设计第一次作业
- Hadoop2.7.3完全分布式搭建
- 编码实现Spring 利用@Resource注解实现bean的注入,xml实现基本数据类型的注入
- 一个基于docker的bedrock minecraft PE 服务器
- AI新浪潮:截止2022年,全球74%的计算将来自端侧
- 小牛照片恢复软件_电脑移动硬盘U盘数据恢复SD卡照片文件软件修复开盘远程维修服务...
- 使用Hibernate编写通用数据库操作代码
- iptables详解(13):iptables动作总结之二
- Sunisoft.IrisSkin.SkinEngine 设置winform皮肤
- cron计划任务的介绍
- html 表格_HTML------表格
- Android Intent常用方法详细介绍,显示Intent,隐式Intent,调用浏览器,拨号,发短信,传递数据
- 解析内、外职业发展规划秘诀
- 计算机电路基础实验一仪器使用,计算机电路基础(1)实验.pdf
- Linux运维的黑客之路
- Docker设置容器CPU、memory、磁盘IO资源限制
- 如何用BabeLua运行Lua代码
- EF migration conflicted with foreign key constraint
- python 游戏引擎 cocos2d_2.2 完成一个Cocos2d游戏程序代码
- java 识别图片 边框_atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本...
热门文章
- python用Levenshtein计算文本相似度(附带所有个人对函数的理解)
- Java学习篇十——关于方法的定义和使用
- 基于JAVA音乐网站的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- ZXing二维码介绍
- 路由器不同类型的内存
- dell服务器 指示灯_戴尔R710服务器硬盘出现告警(绿黄灯闪),解决方法
- QTranslate 3.1.1:整合7种在线翻译的小工具
- MFC程序中获取实时汇率(用于汇率转换功能)
- css样式 三种引入方式 选择器 常用属性:背景属性 字体属性 边框属性 内间距 外间距 盒子模型
- HotSpot 源代码编译