爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 16020|回复: 4
收起左侧

[Flash修改] 【7月20日更新 V1.1】PictureView - 6688的java看图程序(支持16色灰度)

[复制链接]
发表于 2005-8-7 00:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
请参看新的2.0版本正式发布帖:http://mobile.0110.cn/viewthread ... page%3D2#pid1331531
      小8是黑白手机,即她的屏幕仅有两种颜色,黑色和白色,连灰度都不支持,所以要在小8上看图片,很难。
   
      要想支持灰度图片,有两种方案:
      其一是采用纺色,用屏幕上的多个点(例如4*4)代替原来位图的一个点,采用不同的黑白交织来表示不同的灰度,采用此方案的缺点是图片的真实点阵很大,小8屏幕本来就不算大,若用16个点代替原来的一个点,一屏只能看原图指甲盖大小,不是很实用。
      其二是采用视觉暂留,多帧循环扫描,产生灰度效果,实现起来比较困难。
   
      近期抽了点时间,潜心研究6688的Java应用开发,写了这个程序,采用视觉暂留多帧循环扫描的方案看灰度图片,发到论坛上,和论坛的8友们共享:)

      使用说明:
      1、用我提供的工具BmpConv.exe打开任何彩色BMP位图文件,按下“Process”按钮,将图片进行处理,处理后的文件和原位图文件存储在同一目录下,名字相同,只是后缀名改为了“.data”。
      2、将此.data文件拷贝至PictureView程序的Storage目录下。
      3、启动PictureView Java程序。
      4、按左软键“选项”,选择“Open File...”,输入文件名(后缀名可以不输),然后选择Ok(注:需要连按几次下方向键才能看见OK选项),即可进入图片全尺寸查看模式。
      5、已经打开过的文件会出现在文件列表中,单按右软键“选择”即可。

      全尺寸查看模式下的操作:
      拨号键 :切换至缩放模式。
      挂机键 :退出图片查看。
      导航键 :4方向小步滚动图片。
      数字键5 :滚动至图片中心。
      数字键1、2、3、4、6、7、8、9 :8方向大步滚动图片。
      *键 :亮灯/关灯。
   
      缩放模式下的操作:
      拨号键 :切换至全尺寸查看模式。
      挂机键 :退出图片查看。
      导航键 :4方向小步移动位置指针。
      数字键5 :位置指针移动至图片中心。
      数字键1、2、3、4、6、7、8、9 :8方向大步移动位置指针。
      *键 :亮灯/关灯。
   
      提示:
      1、您可以切换至缩放模式,移动位置指针,定位您想看的图片位置,再切换回全尺寸查看模式,实现快速定位。
      2、程序支持几十M的大文件,例如:地图转制的data文件。
      3、如果想看照片,建议原图片质量要好,这很重要,缩小至长宽各200像素左右,再用BmpConv程序处理,效果会比较好,否则图片太大,会有只见树不见森林的感觉。
      4、程序暂不支持中文文件名。

--------------------------------------
答机友问

关于截屏:程序是没办法截屏的,采用截屏工具,只能看见16帧中的一帧,如果要看效果,可以用数码相机照出来,不过我的数码相机借给朋友了,所以就免提供效果图了,程序附带了两张小图片,大家可以在手机上自己看看。

关于闪烁:闪烁是正常的,如果不闪,是无法区分灰度的,这一点用过ACEVEDIO的机友应该比较清楚。我采用的是直接写显存的函数,不可能再快了。如果手机的运算速度再快点,每秒能够显示更多的帧,估计就感觉不到闪烁了;另,快速整屏写显存,会有干扰象素产生,效果没有我期望的好,不知是JVM的问题还是硬件问题,我无能为力了。

关于缩放:有机友提到建议提供分级缩放功能,6688的CPU是没有能力在一、两秒内完成缩放运算的,我估计几分钟都不够。其实缩略图信息是我在处理位图时,直接写在.data文件里的,目的是能在手机上快速调出(这本可以更快,我有点偷懒了),方便全图导航。

关于滚屏:如果只看很小的图片,我可以提前将数据加载内存,绝对能做到滚屏如飞,但这个程序设计时是考虑支持大图片的,所以文件格式的定义比较特别,滚屏差量数据从文件读出,重整,再扔到16帧里,运算量是不小的,目前做到的0.5秒左右的滚屏时间,已经是我所能做到的极限了。

关于.data文件大小:16色灰度,每个象素点只用半字节就可以表示了,我的初衷是只将灰度数据存储在文件中,滚屏时,Java程序从文件中读取相应的灰度数据,通过我定义的“灰度-帧”表,运算生成16帧的差量数据,扔到16帧中去,可惜,多日来,我绞尽脑汁,换了多种方案,最快的小滚屏时间也需要2~3秒钟,无法接受;所以我最终只能用空间换时间,将帧数据用BmpConv程序提前在电脑上生成,存储在.data文件中,这样的文件大小会大四倍,相当于每象素两字节,对不起MMC卡容量小的机友了(可以考虑在转data文件时,选择8色灰度,这样文件大小会小一半,但是效果也会差些)。尽管如此,如非一时的灵感,运用SIEMENS游戏API中的ExtendedImage类快速地把数据逐行写入,再快速逐列提出,目前的0.5秒滚屏速度是做不到的。

这个程序的开发很辛苦,有很多关键问题需要解决,我花了很长的一段时间完成。一周前,开发卡死在滚屏速度上,在地铁上,冥思苦想着如何改进算法才能提高滚屏速度,邻座一女孩正在用彩屏手机玩赛车游戏,画面之流畅,就像我在家中用3D显卡打游戏,当时的心情,很难用言语描述。小8老了,大家对她要求不要太高......


--------------------------------------
更新信息

2005.7.18
      修改了BmpConv.exe程序的灰度表,降低16帧选项的闪烁,目前闪烁情况从理论上说应该和8帧的差不多,基本看不出整画面由暗至亮的渐变效果。Java程序暂时没有更新,但是重新上传了,其附带的示例图片是用新版的BmpConv.exe生成的,大家可以比较一下。

2005.7.20 【1.1版】
      我早期做灰度测试的时候就发现,用paint()画图要比用blittoScreen直接写屏效果好,因为blittoScreen会带来明显的横向干扰纹,只不过paint()画图比较慢,画面闪烁比较厉害,所以没有采用paint()方式。
      这两天发现可以通过重排灰度表来弥补刷屏速度慢的不足,因为人眼感觉到闪烁是由于某点的黑帧和白帧之间间隔太长。适度调整灰度表,灰度效果不变,但是人眼的感受可以改善。
      例如某灰度值的帧排列:      
                              1111000000000000   //16帧黑白定义老版
                              1100000011000000   //16帧黑白定义7月18日版
                              1000100010001000   //16帧黑白定义7月20日版,即使刷屏慢四倍,人眼感受也和原版差不多
      中午抽了点时间,将Java程序改回paint()方式作图,同时修改了BmpConv.exe程序的灰度表,发现效果大大改善,画质明显提高,请大家试用!!注意,Java程序和转换工具都必需用新版。


[ 本帖最后由 yusongchina 于 2005-8-23 18:41 编辑 ]

原图片

原图片

16灰度

16灰度

PictureView.rar

47.64 KB, 下载次数: 84

【作废】[V1.0]Java程序(7.18日更新,仅更新了例子图片)

BmpConv.rar

142.28 KB, 下载次数: 84

【作废】[V1.0]位图转换工具(7.18日更新)

PictureView.rar

80.96 KB, 下载次数: 206

[V1.1]Java程序(7.20日更新)

BmpConv.rar

142.27 KB, 下载次数: 196

[V1.1]位图转换工具(7.20日更新)

发表于 2005-8-18 20:59:14 | 显示全部楼层
支持                         
回复 支持 反对

使用道具 举报

发表于 2005-8-19 15:42:06 | 显示全部楼层
纯支持,谢谢楼主提供!!
回复 支持 反对

使用道具 举报

发表于 2005-11-12 05:36:20 | 显示全部楼层
为什么看图的时候会抖动?
回复 支持 反对

使用道具 举报

发表于 2006-3-25 19:05:16 | 显示全部楼层
好呀,不错的东东,以后我也可以炫一炫了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-6-16 18:19

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表