社区
J2ME
帖子详情
[100分求教]用J2ME/MIDP2.0如何将低分辨率图片扩大显示出来?
Muphinx
2004-08-23 11:10:46
各位高手,我发现不管是用ImageItem.setImage(...)还是Graphics.drawImage(...)
好像都只能将图片按原分辨率显示出来.我做了一个MIDlet将160 * 120的JPG
在Moto A760上显示出来,因为A760屏幕较大,图片显得很小,我想将图片扩大显示出来
但是前提是不改变图片的分辨率,不知道有什么办法没有?
请各位高手指教,绝对给分~
...全文
176
10
打赏
收藏
[100分求教]用J2ME/MIDP2.0如何将低分辨率图片扩大显示出来?
各位高手,我发现不管是用ImageItem.setImage(...)还是Graphics.drawImage(...) 好像都只能将图片按原分辨率显示出来.我做了一个MIDlet将160 * 120的JPG 在Moto A760上显示出来,因为A760屏幕较大,图片显得很小,我想将图片扩大显示出来 但是前提是不改变图片的分辨率,不知道有什么办法没有? 请各位高手指教,绝对给分~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Muphinx
2004-08-25
打赏
举报
回复
十分感谢ashram(孤鸿)的耐心指教~我明白该怎么弄了
也谢谢yg1982(游)的启发~
OK,这就结贴给分
sniper_bat
2004-08-24
打赏
举报
回复
哈哈,孤鸿的贴子,顶一下.
顺便也帮我顶一下...
:P
http://community.csdn.net/Expert/topic/3295/3295330.xml?temp=.225033
ashram
2004-08-24
打赏
举报
回复
随便说一下,上面提供的方法如果扩大的太多回产生锯齿,如果用双线形插值可以解决锯齿的问题。可是双线形插值速度太慢一般是不能接受的,只是从技术角度来说双线形插值值得去了解。
yg1982
2004-08-24
打赏
举报
回复
up,不错
ashram
2004-08-24
打赏
举报
回复
我再说明一下思想吧,就是比如原图是10*10,要扩展到100*100;那先扩展成100*10就是先变成宽的图形,我们把图形看成由100条树直且长度为10的线条组成。具体作法是:那扩展后图形的前10条线都对应原图的第一条,那就在前10条线上画上原图的第一条线,其他的依次类推,这样我们就得到一张高于原图一样,但较宽的图形。在用相同的方法加工的得到的图片,不过这次是把图形看成一条条横的线组成的。即在高度上进行扩展。最后的到想要的图片。
ashram
2004-08-24
打赏
举报
回复
yg1982(游) 的方法只适用于J2SE因为SE中有
g.drawImage(Image img,int x,int y,int Width,int Height, ImageObserver observer) ;
这样的方法,这个方法本身就可缩放图象。
真的要做也不是不可以,不过比较麻烦,而且消耗比较多的处理时间。如果性能好的机器可以考虑使用。
public Image scaleImg(Image src,int dstW,int dstH)
{
int srcW = src.getWidth();
int srcH = src.getHeight();
Image buf1 = Image.createImage(dstW,srcH);
Graphics bg = buf1.getGraphics();
int srcX=0;
for(int x = 0;x<dstW;x++)//先横向扩展
{
srcX = x*srcW/dstW;//求扩展后的某点X所对应的原图上的X
bg.setClip(x,0,1,srcH);
bg.drawImage(src,x-srcX,0,0);
}
Image buf2 = Image.createImage(dstW,dstH);
bg = buf2.getGraphics();
int srcY = 0;
for(int y=0;y<dstH;y++)
{
srcY = y*srcH/dstH;
bg.setClip(0,y,dstW,1);
bg.drawImage(buf1,0,y-srcY,0);
}
return buf2;
}
yg1982
2004-08-24
打赏
举报
回复
不好意思,没看清楚你上面的话,上面这个方法要新生成一张图片。
如果要像你说的那样,你需要先将图片转化为数组,然后再对数组作处理,具体方法应该是取渐近色吧。也就是说,在两个数组值之间加一个值,大小为前后两个值的平均数,但这好像只能扩大相应倍数。
yg1982
2004-08-24
打赏
举报
回复
给你代码,这是csdn上一个朋友的,具体名字忘了,可以将图片放大(不过是用j2se),希望对你有帮助.
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
public class ResizeImage {
public static void main(String[] args) {
try {
//源图片
String imageFile = "C:/Documents and Settings/ghost/My Documents/My Pictures/1.jpg";
InputStream imageIn = new FileInputStream(new File(imageFile));
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
BufferedImage im = decoder.decodeAsBufferedImage();
int imh = im.getHeight(null);
int imw = im.getWidth(null);
int multiple = 2; //放大倍数
BufferedImage imout = new BufferedImage(imw * multiple, imh * multiple, 1);
Graphics g = imout.getGraphics();
g.drawImage(im, 0, 0, imw * multiple, imh * multiple, null);
//目的图片
FileOutputStream output = new FileOutputStream("C:/Documents and Settings/ghost/My Documents/My Pictures/2.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(imout);
imageIn.close();
output.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
artmouse
2004-08-24
打赏
举报
回复
感觉这个东西比较困难,好像没有直接的方法可以这样的,除非你自己弄,按插值的方法做出来
Muphinx
2004-08-24
打赏
举报
回复
没有人会吗?就是说我想把一张160 * 120的图片“放大”显示出来,但是不能改变该图片本身的分辨率,有什么办法吗?
j2me
的
midp2
.0的源代码
j2me
的
midp2
.0的源代码
j2me
midp2
.0 下载 源代码 2.0的碰撞检测 像素级碰撞检测
j2me
的
midp2
.0所有源代码
此代码,使得
j2me
的爱好者,初学者更清晰,更明白的了解javaME,了解sun公司人员的编程思路及其思想
J2ME
源码
midp2
.0
不多说了,想要的都知道.
J2me
中文教程
MIDP2
.0
全面覆盖
MIDP2
.0,丰富的示范代码,针对移动开发
android平台中使用
j2me
MIDP2
.0中GameAPI
android平台中
j2me
MIDP2
.0中GameAPI中几个工具类移植版本, 四个类Layer、LayerManager、Sprite、TiledLayer
J2ME
13,100
社区成员
26,495
社区内容
发帖
与我相关
我的任务
J2ME
Java J2ME
复制链接
扫一扫
分享
社区描述
Java J2ME
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章