public class ImageUtil {
public static final Image zoomImage(Image src){
return zoomImage(src,src.getWidth(),src.getHeight(),true,false);
}
public static final Image zoomImage(Image src, int desW, int desH, boolean isBackgroundTrans, boolean isTrans) {
Image desImg = null;
int srcW = src.getWidth(); // source image width
int srcH = src.getHeight(); // source image height
int[] srcBuf = new int[srcW * srcH]; // source image pixel
src.getRGB(srcBuf, 0, srcW, 0, 0, srcW, srcH);
// compute interpolation table
int[] tabY = new int[desH];
int[] tabX = new int[desW];
int sb = 0;
int db = 0;
int tems = 0;
int temd = 0;
int distance = srcH > desH ? srcH : desH;
for ( int i = 0 ; i <= distance ; i++) { /* vertical direction */
tabY[db] = sb;
tems += srcH;
temd += desH;
if ( tems > distance) {
tems -= distance;
sb++;
}
if ( temd > distance) {
temd -= distance;
db++;
}
}
sb = 0;
db = 0;
tems = 0;
temd = 0;
distance = srcW > desW ? srcW : desW;
for ( int i = 0 ; i <= distance ; i++) { /* horizontal direction */
tabX[db] = (short) sb;
tems += srcW;
temd += desW;
if ( tems > distance) {
tems -= distance;
sb++;
}
if ( temd > distance) {
temd -= distance;
db++;
}
}
// set transparence
// if(isTrans){
// int a= 100;//set the transparence of pixel 100
// for(int i=0;i<srcBuf.length;i++){
// if(srcBuf[i]==0x00FFFFFF)continue;
// srcBuf[i]=(a<<24) | (srcBuf[i] & 0x00FFFFFF);// modify the highest 2 value
// }
// }
// formation enlarge and shorten buffer pixel
int[] desBuf = new int[desW * desH];
int dx = 0;
int dy = 0;
int sy = 0;
int oldy = -1;
for ( int i = 0 ; i < desH ; i++) {
if ( oldy == tabY[i]) {
System.arraycopy(desBuf, dy - desW, desBuf, dy, desW);
}
else {
dx = 0;
for ( int j = 0 ; j < desW ; j++) {
desBuf[dy + dx] = srcBuf[sy + tabX[j]];
dx++;
}
sy += (tabY[i] - oldy) * srcW;
}
oldy = tabY[i];
dy += desW;
}
if(isTrans){
// int a= 100;//set the transparence of pixel 100
for(int i=0;i<desBuf.length;i++){
if(desBuf[i]==0x00FFFFFF)continue;
int alpha = ((desBuf[i] & 0xff000000) >>> 24)==0?0:100;
desBuf[i]=((alpha+1)<<24) | (desBuf[i] & 0x00FFFFFF);// modify the highest 2 value
}
}
if(isBackgroundTrans){
desImg = Image.createRGBImage(desBuf, desW, desH, true);
}else{
desImg = Image.createRGBImage(desBuf, desW, desH, false);
}
return desImg;
}
}
分享到:
- 2007-12-04 13:33
- 浏览 1888
- 评论(1)
- 论坛回复 / 浏览 (0 / 3003)
- 查看更多
相关推荐
j2me图片缩放方法,很实用的小方法,来看看吧
J2ME手机开发中得透明图片处理 J2ME手机开发中得透明图片处理
j2me 图片像书翻页的效果 j2me 图片像书翻页的效果 j2me 图片像书翻页的效果 j2me 图片像书翻页的效果
该方法可以使图片达到透明变化效果
j2me半透明图片实现半透明图片实现半透明图片实现
java j2me上的图片抖动效果 特效 供大家参考学习
http j2me 图片上传http j2me 图片上传http j2me 图片上传http j2me 图片上传
基于j2me的图片特效(缩放,裁剪,调整大小,镜像,对比度亮度调整,黑白,线条,粉笔画) 源码 封装好了类
基于j2me的图片特效(缩放,裁剪,调整大小,镜像,对比度亮度调整,黑白,线条,粉笔画)
J2me中任意角度图片旋转 J2me中任意角度图片旋转
J2ME 图片处理教程,使用J2ME处理图片,让图片转换有翻书的效果。
j2me图片编辑器 j2me 手机游戏图片编辑器
该资源集成了 常用的一些动态特效,如 摇钱树,重力感应,播放mp3 的以及图片的一些处理等...
使用J2ME实现的手机图片菜单,供J2ME初学者参考学习使用。 压缩包包括: 1.源代码 2.图片资源【网络下载】 3.编译好的JAD,JAR文件【位于deployed目录】 代码为本人原创,希望朋友多多批评指正。 ...
J2ME开发 J2ME开发 J2ME开发 J2ME开发
在j2me中,通过对像素点的操作,完成对图片的任意角度的旋转.
图片的特点及分类; png图片的格式 分析; 图片在J2me中的应用。
j2me socket 图片上传j2me socket 图片上传j2me socket 图片上传j2me socket 图片上传
j2me 文字渐隐效果 j2me 文字渐隐效果 j2me 文字渐隐效果
j2me中对图片处理的代码,可对图片进行缩放裁剪等