社区
J2ME
帖子详情
关于createImage(InputStream stream)创建大图片的问题
littlepboy
2008-12-08 03:49:40
我通过HTTP下载了一幅大图片(尺寸大于手机屏幕,400x300),
然后向用createImage(InputStream stream)来创建并显示,
记过抛出了异常,创建失败。在网上找了些文章,
说有些手机不能创建大于手机屏幕的图片,那该怎么办呢?
我本来是创建出来以后直接在ImageItem中就显示了,很方便,
在模拟器上没有问题,到手机上就出问题。有没有简单的办法?
...全文
318
19
打赏
收藏
关于createImage(InputStream stream)创建大图片的问题
我通过HTTP下载了一幅大图片(尺寸大于手机屏幕,400x300), 然后向用createImage(InputStream stream)来创建并显示, 记过抛出了异常,创建失败。在网上找了些文章, 说有些手机不能创建大于手机屏幕的图片,那该怎么办呢? 我本来是创建出来以后直接在ImageItem中就显示了,很方便, 在模拟器上没有问题,到手机上就出问题。有没有简单的办法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hljztl
2010-06-22
打赏
举报
回复
ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
int ch;
while ((ch = iStrm.read()) != -1)
bStrm.write(ch);
// Place into image array
byte imageData[] = bStrm.toByteArray();
// Create the image from the byte array
im = Image.createImage(imageData, 0, imageData.length);
littlepboy
2008-12-09
打赏
举报
回复
大家对我的帮助太大了,加分感谢。
fuyueyue
2008-12-08
打赏
举报
回复
学习
doney_dongxiang
2008-12-08
打赏
举报
回复
赞同,学习把,可能会有的问题,都被他们说了
kf156
2008-12-08
打赏
举报
回复
windowsMobile好像是可以再装过虚拟机
不过具体的你可能得上网查下
littlepboy
2008-12-08
打赏
举报
回复
那有没有办法让手机的虚拟机支持jpg,或替换支持的虚拟机呢?
kf156
2008-12-08
打赏
举报
回复
如果你一定要支持只能自己解码了
像手机游戏一般都是用PNG格式的
String encoding = System.getProperty("video.snapshot.encodings");
这是得到调用手机拍照时使用的参数,不过用来获取支持的图片格式也有道理
得到null是厂商没实现。支不支持还是以自己实际测试结果为主。
高级界面的要看手机厂商是怎样实现的了
littlepboy
2008-12-08
打赏
举报
回复
那可能就是我手机的JVM不支持jpg了,好挫啊,有没有办法让它支持?
目前的手机大部分是支持jpg的还是不支持的呢?
我用网上说的方法String encoding = System.getProperty("video.snapshot.encodings");
来获取支持的格式,但得到的也是null,手机就没这个键值。
ImageItem怎么不支持横向滚动(在我手机上连纵向滚动都不支持)?太不方便了,郁闷透顶。。。
kf156
2008-12-08
打赏
举报
回复
如果你确定文件及路径正确,那应该就是那手机不支持JPG了。
你说的ImageItem中图片过大通过方向键查看
我目前的思路是这样:
从大图中截图合适大小生成ImageItem
按方向键后,再根据具体按键重新截取图片相应的位置赋给ImageItem
不过感觉比较麻烦就是了。不知道有没人有比较好的方法
或者用替代方案:
显示个可以完整查看的缩略图,点击后用Canvas生成原比例的大图查看。
brant_yan
2008-12-08
打赏
举报
回复
[Quote=引用 9 楼 littlepboy 的回复:]
1、我直接在初始化时Image.createImage("/DefaultPicture.jpg"),也直接报null异常,
晕啊,不会我的多普达不支持jpg吧?。。。
[/Quote]
你确认了多普达上面的JVM支持JPG了??
littlepboy
2008-12-08
打赏
举报
回复
1、我直接在初始化时Image.createImage("/DefaultPicture.jpg"),也直接报null异常,
晕啊,不会我的多普达不支持jpg吧?。。。
2、有提示资费问题,流应当没问题,因为换成png就能正常下载并显示了。
3、必须用canvas实现么?那又要改很多代码了。。。
kf156
2008-12-08
打赏
举报
回复
1.支不支持JPG,最简单的方法就是放个JPG格式的图片在资源里,看能不能正常读取显示就行了
2.你确认你读到的流是正确的,即真机上是否有判断并过滤资费页面
3.高级界面的处理是系统的事了,想实现用Canvas吧 (ImageItem要实现也是可以的,但我的思路复杂了些,暂先不说了)
littlepboy
2008-12-08
打赏
举报
回复
现在的问题总结一下可能多了几个:
1、我的手机是否支持创建jpg图片?(应该支持的吧,多普达的手机,我还拿jpg图片做桌面呢)
2、如果支持jpg,那是不是createImage(InputStream stream)的问题?为何会出问题?
如果先把数据都读出来,再创建是不是可以解决?(还没尝试,先问问有没有可能)
3、图片超过屏幕尺寸,如何能够通过按上下左右键来移动图片呢?
我的手机显示png的时候直接把大于屏幕之外的部分全部裁剪了,我用ImageItem显示的。
littlepboy
2008-12-08
打赏
举报
回复
ls各位解析都很到位,先谢谢了。
我重新跟踪了一下问题,发现问题有些变化。
png图片超过手机屏幕也能显示出来,jpg图片不管多小也显示不出来。
我原来一直在试jpg的大图片,以为是大图片导致的问题,现在看来是图片格式的问题。
那我该怎么办?
我的手机是多普达的Windows Mobile。
restartrr
2008-12-08
打赏
举报
回复
先定位问题吧
图片格式
真机型号
yanhan0615
2008-12-08
打赏
举报
回复
你这样,先用吧数据全部读到内存中来,再创建图片,
使用createImage(InputStream stream)来创建,当InputStream 不稳定的时候我总觉得可能会有问题
kf156
2008-12-08
打赏
举报
回复
同意楼上的。
先把问题原因定位好
模拟器上可以,真机上不行
可能的原因有:
1.像你说的,某些手机可能不支持过大的图片
2.手机不支持该图片格式
3.得到的图片数据有问题
4.加载时内存爆了
littlepboy
2008-12-08
打赏
举报
回复
已经确定是创建图片时抛的异常,异常信息为:null。可能我上面说的不清楚。
yanhan0615
2008-12-08
打赏
举报
回复
你先确定是创建图片的问题还是网络传输的问题,或者是内存问题
JavaIO流精讲上
课程内容主要有:File类概述、File类功能讲解、JAVA IO流概述、字节流、字符流、缓冲流、
Input
Stream
、Output
Stream
、Reader、Writer、File
Input
Stream
、FileOutput
Stream
、
Input
Stream
Reader、Output
Stream
Writer、...
图片
上传根据
stream
生成
image
对于
图片
上传代码的整合 因为需要判断上传的
图片
的宽高是否符合尺寸,所以在最初拿到
input
stream
的时候,就直接获取
image
格式的
图片
本来是想在下面的checkFile中获取的,不过直接使用System.Drawing.
Image
.From
Stream
(request.PostedFile.
Input
Stream
);的时候报错了,错误意思是说参数为空,应该是由于上面获取byte[]file...
c#中字节数组byte[]、
图片
image
、流
stream
,字符串string、内存流Memory
Stream
、文件file,之间的转换
字节数组byte[]与内存流Memory
Stream
之间的转换。字节数组byte[]与字符串string之间的编码解码。字节数组byte[]与
图片
image
之间的转化。字节数组byte[]与流
stream
之间的转换。流
Stream
和 文件file之间的转换。将
Stream
转成 byte[]将 byte[] 转成
Stream
。将
Stream
写入文件。字节数组转化为输入内存流。输出内存流转化为字节数组。从文件读取
Stream
。字符串到字节数组的编码。字节数组到字符串的解码。
android bitmap File
Input
Stream
File转化
Android中
图片
的读取,修改,显示和保存涉及到的类大致如图所示。 在读取
图片
文件时,先将
图片
文件转换为
Input
Stream
对象,然后通过BitmapFactory将其转换为Bitmap对象。 在
图片
保存时,先将Bitmap对象转换为Output
Stream
对象,然后再将Output
Stream
输出到文件中。 如果要对
图片
进行修改,可以通过将Bitmap对象转换为颜色数组(int[])来修改,也可以通过Canvas来修改。此外Bitmap类提供了一个
create
Bitmap的静态方法,可以对B..
java处理
图片
一、几个处理
图片
时的关键类
Image
、Buffered
Image
、Graphics、Graphics2D、Shape、Color、
Image
Io、
Image
Input
Stream
下面逐个介绍上述几个类 (一)、图像类 1.1、
Image
抽象类
Image
是表示图形图像的所有类的超类。必须以特定于平台的方式获取图像 1.2、Buffered
Image
Buffere
J2ME
13,100
社区成员
26,495
社区内容
发帖
与我相关
我的任务
J2ME
Java J2ME
复制链接
扫一扫
分享
社区描述
Java J2ME
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章