- 浏览: 135830 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
datawarehouse:
datawarehouse 写道ngix 淘宝是基于这个开发了 ...
解密淘宝网的开源架构 -
datawarehouse:
ngix 淘宝是基于这个开发了一个自己的webserver吧。 ...
解密淘宝网的开源架构 -
eyelock:
我运行报错,,楼主能解答一下G,对swing不熟。
raphi ...
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧 -
lostsky_11:
楼主写出例子了么?物理碰撞部分可能跟你说的差不多渲染部分可以搜 ...
Where is my water 游戏算法 -
xouou_53320:
都是牛人
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧
java 代码
- 做了个刷投票的程序 识别随即码图片的地方用到了BMP图片识别 需要识别出BMP图片里的数字
- 网站的BMP图片格式比较规则 20 * 45 的大小 每个数字大小是 10 * 8 左侧空 5 像素 右侧 5 像素
- 研究BMP图片格式发现 BMP主要包括 3 部分 头 颜色表 图像数据区
- 图像结构如下 类似C++里的结构体
- public class BMPHeader {
- public byte [] bm = new byte [ 2 ]; // 2位 BM
- public byte [] size = new byte [ 4 ]; // 4位 2038 (f6 07)
- public byte [] save = new byte [ 4 ]; // 4位 00
- public byte [] dataPos = new byte [ 4 ]; // 4位 图像数据区位置
- // (3604)文件头信息块大小,图像描述信息块的大小,图像颜色表的大小,保留(为01)
- public byte [] desSize = new byte [ 4 ]; // 4位图像描述信息块大小28h
- public byte [] width = new byte [ 4 ]; // 4位 宽度
- public byte [] hight = new byte [ 4 ]; // 4位 高度
- public byte [] plane = new byte [ 2 ]; // 2位 plane为0100
- public byte [] bytes = new byte [ 2 ]; // 2位 图像的位数 0800
- public byte [] zip = new byte [ 4 ]; // 4位 压缩方式00不压缩
- public byte [] picSize = new byte [ 4 ]; // 4位 c0 03 = 960 图像区数据的大小
- public byte [] shuiPing = new byte [ 4 ]; // 4位 水平每米有多少像素
- public byte [] cuiZhi = new byte [ 4 ]; // 4位 垂直每米有多少像素
- public byte [] colorNum = new byte [ 4 ]; // 4位 此图像所用的颜色数
- // 图像数据从436-7f5
- public byte [] colorTab = new byte [ 1028 ];
- public byte [] bmpData = new byte [ 960 ];
- }
- 颜色表ColorTab应该为 1024 长 不知道为什么会是 1028 没算明白这里
- 图像数据区是 960 位 每一位都是一个颜色点 保存颜色表中的索引数据 16 进制 3 行表示图像中的一行
- 从下往上排列 45 = 16 * 3 - 3 有 3 位补零 因为bmp要保证每行数据点要为 4 的整数倍
- 得到数据内容就可以根据行列坐标定位每一点的颜色 从而判断出图像中的数字
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- public class BMPTest {
- private byte [][] parse960ToLine( byte [] bmpData) {
- int lineSize = 48 ;
- int columnIndex = 0 ;
- int rowIndex = 0 ;
- byte [][] bmp = new byte [ 20 ][ 48 ];
- for ( int i = 0 ; i < bmpData.length; i++) {
- bmp[rowIndex][columnIndex] = bmpData[i];
- columnIndex++;
- if (columnIndex == 48 ) {
- rowIndex++;
- columnIndex = 0 ;
- }
- }
- return bmp;
- }
- private short parse1Num( byte [][] theByte) {
- if (theByte[ 0 ][ 0 ] == 0 && theByte[ 0 ][ 1 ] == 0 && theByte[ 0 ][ 2 ] == 0
- && theByte[ 0 ][ 3 ] == 0 && theByte[ 0 ][ 4 ] == 0
- && theByte[ 0 ][ 5 ] == 0 && theByte[ 0 ][ 6 ] == 0
- && theByte[ 0 ][ 7 ] == 0 && theByte[ 7 ][ 0 ] == 0
- && theByte[ 7 ][ 1 ] == 0 && theByte[ 1 ][ 1 ] == 0
- && theByte[ 1 ][ 2 ] == 0 && theByte[ 2 ][ 2 ] == 0
- && theByte[ 2 ][ 3 ] == 0 && theByte[ 3 ][ 3 ] == 0
- && theByte[ 3 ][ 4 ] == 0 && theByte[ 4 ][ 4 ] == 0 ) {
- return 2 ;
- } else if (theByte[ 0 ][ 0 ] == 3 && theByte[ 0 ][ 1 ] == 0
- && theByte[ 0 ][ 2 ] == 0 && theByte[ 0 ][ 3 ] == 0
- && theByte[ 0 ][ 4 ] == 0 && theByte[ 1 ][ 0 ] == 0
- && theByte[ 1 ][ 1 ] == 0 && theByte[ 1 ][ 2 ] == 3
- && theByte[ 9 ][ 1 ] == 0 && theByte[ 9 ][ 2 ] == 0
- && theByte[ 9 ][ 3 ] == 0 && theByte[ 9 ][ 4 ] == 0
- && theByte[ 9 ][ 5 ] == 0 && theByte[ 8 ][ 0 ] == 0
- && theByte[ 8 ][ 1 ] == 0 && theByte[ 8 ][ 5 ] == 0
- && theByte[ 8 ][ 6 ] == 0 ) {
- return 3 ;
- } else if (theByte[ 0 ][ 1 ] == 0 && theByte[ 0 ][ 2 ] == 0
- && theByte[ 0 ][ 3 ] == 0 && theByte[ 0 ][ 4 ] == 0
- && theByte[ 0 ][ 5 ] == 0 && theByte[ 0 ][ 6 ] == 0
- && theByte[ 0 ][ 3 ] == 0 && theByte[ 1 ][ 3 ] == 0
- && theByte[ 2 ][ 3 ] == 0 && theByte[ 3 ][ 3 ] == 0
- && theByte[ 4 ][ 3 ] == 0 && theByte[ 5 ][ 3 ] == 0
- && theByte[ 6 ][ 3 ] == 0 && theByte[ 7 ][ 3 ] == 0
- && theByte[ 8 ][ 3 ] == 0 && theByte[ 9 ][ 3 ] == 0
- && theByte[ 0 ][ 4 ] == 0 && theByte[ 1 ][ 4 ] == 0
- && theByte[ 2 ][ 4 ] == 0 && theByte[ 3 ][ 4 ] == 0
- && theByte[ 4 ][ 4 ] == 0 && theByte[ 5 ][ 4 ] == 0
- && theByte[ 6 ][ 4 ] == 0 && theByte[ 7 ][ 4 ] == 0
- && theByte[ 8 ][ 4 ] == 0 && theByte[ 9 ][ 4 ] == 0 ) {
- return 1 ;
- } else if (theByte[ 0 ][ 5 ] == 0 && theByte[ 1 ][ 5 ] == 0
- && theByte[ 2 ][ 5 ] == 0 && theByte[ 3 ][ 5 ] == 0
- && theByte[ 4 ][ 5 ] == 0 && theByte[ 5 ][ 5 ] == 0
- && theByte[ 6 ][ 5 ] == 0 && theByte[ 7 ][ 5 ] == 0
- && theByte[ 8 ][ 5 ] == 0 && theByte[ 9 ][ 5 ] == 0
- && theByte[ 0 ][ 6 ] == 0 && theByte[ 1 ][ 6 ] == 0
- && theByte[ 2 ][ 6 ] == 0 && theByte[ 3 ][ 6 ] == 0
- && theByte[ 4 ][ 6 ] == 0 && theByte[ 5 ][ 6 ] == 0
- && theByte[ 6 ][ 6 ] == 0 && theByte[ 7 ][ 6 ] == 0
- && theByte[ 8 ][ 6 ] == 0 && theByte[ 9 ][ 6 ] == 0 ) {
- return 4 ;
- } else if (theByte[ 5 ][ 0 ] == 0 && theByte[ 6 ][ 0 ] == 0
- && theByte[ 7 ][ 0 ] == 0 && theByte[ 8 ][ 0 ] == 0
- && theByte[ 9 ][ 0 ] == 0 && theByte[ 5 ][ 1 ] == 0
- && theByte[ 6 ][ 1 ] == 0 && theByte[ 7 ][ 1 ] == 0
- && theByte[ 8 ][ 1 ] == 0 && theByte[ 9 ][ 1 ] == 0
- && theByte[ 9 ][ 2 ] == 0 && theByte[ 9 ][ 3 ] == 0
- && theByte[ 9 ][ 4 ] == 0 && theByte[ 9 ][ 5 ] == 0
- && theByte[ 9 ][ 6 ] == 0 && theByte[ 2 ][ 6 ] == 0
- && theByte[ 3 ][ 6 ] == 0 && theByte[ 4 ][ 6 ] == 0
- && theByte[ 5 ][ 6 ] == 0 && theByte[ 2 ][ 7 ] == 0 ) {
- return 5 ;
- } else if (theByte[ 2 ][ 0 ] == 0 && theByte[ 3 ][ 0 ] == 0
- && theByte[ 4 ][ 0 ] == 0 && theByte[ 5 ][ 0 ] == 0
- && theByte[ 6 ][ 0 ] == 0 && theByte[ 7 ][ 0 ] == 0
- && theByte[ 1 ][ 1 ] == 0 && theByte[ 2 ][ 1 ] == 0
- && theByte[ 3 ][ 1 ] == 0 && theByte[ 4 ][ 1 ] == 0
- && theByte[ 5 ][ 1 ] == 0 && theByte[ 6 ][ 1 ] == 0
- && theByte[ 7 ][ 1 ] == 0 && theByte[ 8 ][ 1 ] == 0 ) {
- return 6 ;
- } else if (theByte[ 9 ][ 0 ] == 0 && theByte[ 9 ][ 1 ] == 0
- && theByte[ 9 ][ 2 ] == 0 && theByte[ 9 ][ 3 ] == 00
- && theByte[ 9 ][ 4 ] == 0 && theByte[ 9 ][ 5 ] == 0
- && theByte[ 9 ][ 6 ] == 0 && theByte[ 9 ][ 7 ] == 0
- && theByte[ 8 ][ 7 ] == 0 && theByte[ 8 ][ 6 ] == 0
- && theByte[ 7 ][ 6 ] == 0 && theByte[ 7 ][ 7 ] == 0
- && theByte[ 6 ][ 6 ] == 0 && theByte[ 6 ][ 5 ] == 0
- && theByte[ 5 ][ 5 ] == 0 && theByte[ 5 ][ 4 ] == 0
- && theByte[ 4 ][ 4 ] == 0 ) {
- return 7 ;
- } else if (theByte[ 2 ][ 0 ] == 0 && theByte[ 3 ][ 0 ] == 0
- && theByte[ 7 ][ 0 ] == 0 && theByte[ 1 ][ 1 ] == 0
- && theByte[ 2 ][ 1 ] == 0 && theByte[ 3 ][ 1 ] == 0
- && theByte[ 4 ][ 1 ] == 0 && theByte[ 0 ][ 2 ] == 0
- && theByte[ 0 ][ 3 ] == 0 && theByte[ 0 ][ 4 ] == 0
- && theByte[ 1 ][ 5 ] == 0 && theByte[ 1 ][ 6 ] == 0
- && theByte[ 1 ][ 6 ] == 0 && theByte[ 4 ][ 2 ] == 0
- && theByte[ 5 ][ 2 ] == 0 && theByte[ 6 ][ 2 ] == 0 ) {
- return 8 ;
- } else if (theByte[ 1 ][ 6 ] == 0 && theByte[ 2 ][ 6 ] == 0
- && theByte[ 3 ][ 6 ] == 0 && theByte[ 4 ][ 6 ] == 0
- && theByte[ 5 ][ 6 ] == 0 && theByte[ 6 ][ 6 ] == 0
- && theByte[ 2 ][ 7 ] == 0 && theByte[ 3 ][ 7 ] == 0
- && theByte[ 4 ][ 7 ] == 0 && theByte[ 5 ][ 7 ] == 0
- && theByte[ 6 ][ 7 ] == 0 && theByte[ 7 ][ 7 ] == 0
- && theByte[ 5 ][ 5 ] == 0 && theByte[ 4 ][ 2 ] == 0
- && theByte[ 4 ][ 3 ] == 0 && theByte[ 4 ][ 4 ] == 0
- && theByte[ 2 ][ 1 ] == 0 ) {
- return 9 ;
- } else {
- return 0 ;
- }
- }
- private String parse4Num( byte [][] theByte) {
- int x = 0 ;
- int y = 0 ;
- String num;
- byte [][] numByte = new byte [ 10 ][ 8 ];
- for ( int i = 5 ; i < 15 ; i++) {
- for ( int j = 5 ; j < 13 ; j++) {
- numByte[x][y] = theByte[i][j];
- y++;
- }
- x++;
- y = 0 ;
- }
- num = "" + parse1Num(numByte);
- x = 0 ;
- y = 0 ;
- numByte = new byte [ 10 ][ 8 ];
- for ( int i = 5 ; i < 15 ; i++) {
- for ( int j = 14 ; j < 22 ; j++) {
- numByte[x][y] = theByte[i][j];
- y++;
- }
- x++;
- y = 0 ;
- }
- num += parse1Num(numByte);
- x = 0 ;
- y = 0 ;
- numByte = new byte [ 10 ][ 8 ];
- for ( int i = 5 ; i < 15 ; i++) {
- for ( int j = 23 ; j < 31 ; j++) {
- numByte[x][y] = theByte[i][j];
- y++;
- }
- x++;
- y = 0 ;
- }
- num += parse1Num(numByte);
- x = 0 ;
- y = 0 ;
- numByte = new byte [ 10 ][ 8 ];
- for ( int i = 5 ; i < 15 ; i++) {
- for ( int j = 32 ; j < 40 ; j++) {
- numByte[x][y] = theByte[i][j];
- y++;
- }
- x++;
- y = 0 ;
- }
- num += parse1Num(numByte);
- return num;
- }
- /**
- * @param args
- * @throws IOException
- */
- public static void main(String[] args) {
- BMPTest t = new BMPTest();
- t.handler( "D:\\eclipse2\\workspace\\BMPTest\\classes\\9834.bmp" );
- }
- public void handler(String fileName) {
- File bmpFile = new File(fileName);
- FileInputStream fis;
- BMPHeader header = new BMPHeader();
- BMPTest bt = new BMPTest();
- try {
- fis = new FileInputStream(bmpFile);
- fis.read(header.bm);
- fis.read(header.size);
- fis.read(header.save);
- fis.read(header.dataPos);
- fis.read(header.desSize);
- fis.read(header.width);
- fis.read(header.hight);
- fis.read(header.plane);
- fis.read(header.bytes);
- fis.read(header.zip);
- fis.read(header.picSize);
- fis.read(header.shuiPing);
- fis.read(header.cuiZhi);
- fis.read(header.colorNum);
- fis.read(header.colorTab);
- fis.read(header.bmpData);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- System.out.println( "The Picture is:"
- + bt.parse4Num(bt.parse960ToLine(header.bmpData)));
- }
- }
随机码图片格式确定 每位数字的位置都是确定的。。 现在网站上的随机码换成彩色的了
发表评论
-
过年没事,一天时间写了一个是男人就撑住20秒的Java版
2012-01-24 13:21 3799每年过年都没事,都得写点小东西,今年是是男人就撑过20秒(20 ... -
Where is my water 游戏算法
2012-01-23 19:56 2112过年把Where is my water完了一遍,对这个游戏的 ... -
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧
2010-02-16 23:03 11077Bug已经Fix~~ 注释已经补充 import jav ... -
俄罗斯方块:C++中的常用错误原因~~
2008-07-20 20:45 1322很久没有用C++写程序了。。用起来很不顺手! 出了问题不知道怎 ... -
疯狂游戏系列之(一)疯狂俄罗斯策划
2008-07-18 20:38 1494闲来无事,做一个PSP上的俄罗斯方块游戏,大致原则是两个字 疯 ... -
PSP程序开发例子解析(十二)InputSystem
2008-07-14 20:50 1070InputSystem例子掩饰了如何在程序中输入文字 #i ... -
PSP程序开发例子解析(十一)HGEParticles
2008-07-14 20:50 1054HGEParticles这个例子很BT 模仿WindowsMe ... -
PSP程序开发例子解析(十)HGEDistortionMesh
2008-07-14 20:49 1708HGEDistortionMesh例子应用了HGE包中的内容 ... -
PSP程序开发例子解析(九)3DPrimer
2008-07-14 20:48 12583D例子显示一个Cube和一个人物 不断旋转 具体底部底层AP ... -
PSP程序开发例子解析(八)Animator
2008-07-14 20:48 955GameApp.cpp #include <std ... -
PSP程序开发例子解析(七)DisplayingChinese
2008-07-14 20:46 963显示中文 加载点阵文件 没啥说的 就是不清楚点阵文件是哪来的= ... -
PSP程序开发例子解析(六)TrueTypeFont
2008-07-14 20:45 1061按照Windows的ttf字体显示文字。。跑不起来 略 #i ... -
PSP程序开发例子解析(五)Shapes
2008-07-14 20:44 918绘制各种形状 无话可说 #include <st ... -
PSP程序开发例子解析(四)Splines
2008-07-14 20:38 956第四个例子讲述了曲线 ... -
PSP程序开发例子解析(三)ResourceManager
2008-07-14 20:38 966太晚了 明天再写 弄个res文件没找到 换了个工程 copy源 ... -
PSP程序开发例子解析(二)Images
2008-07-14 20:37 1156第二个例子程序演示了 ... -
PSP程序开发例子解析(一)HelloWorld
2008-07-14 20:31 3025今天晚上把PSP的开发环境搭建了起来 并且看了看PSP的Hel ...
相关推荐
C#支持常见的图片格式,如JPEG、PNG、BMP等,通过Image类的Save方法可以将图片保存为不同的格式。 3. 图片格式转换: 要进行图片格式转换,首先需要加载源图片,然后创建一个新的目标图像对象,设置其格式,最后将...
在IT行业中,图片处理是一项常见的任务,涉及到各种图像文件格式的转换、编辑和优化。本资源"jpg2bmp.zip"提供了一个C语言编写的样例,用于将JPEG(jpg)图像文件转换为Bitmap(bmp)格式。这个压缩包内包含的文件...
7. **图像**:这个目录可能包含了用于演示或测试的图像文件,例如JPG、PNG、BMP等格式,读者可以使用这些图像来运行源代码并观察处理结果。 8. **源程序**:这个目录下的文件可能包含了C++源代码文件,如.cpp或.h...
2. `Response.ContentType = "Image/BMP"` 设置了响应的内容类型为位图图像,告诉浏览器接收的数据是图片格式。 3. `Randomize` 初始化随机数生成器,用于在后续的代码中生成随机的颜色和字符样式。 4. `str` 变量...
可支持多种图片格式 (GIF/JPG/BMP/TIFF) ' 3。远程配置文件、图片远程路径 可支持多种读取方法或协议 (HTTP/FTP/共享路径/本地路径) ' 4。后台运行,占用系统资源小。(物理内存约 600KB,虚拟内存约 1400KB) '...
本资源提供的是一个C#编写的源代码,可以将文本框中的文字转换成Jpeg、Bmp和Png等常见图像格式。以下是对这个知识点的详细讲解: 1. **C#编程语言**: C#是由微软开发的一种面向对象的编程语言,广泛应用于Windows...
图片数据可能以BMP、JPEG、PNG等多种格式存在,因此还需要使用到System.Drawing命名空间中的Image类,它可以解析这些格式的图像文件。 图片显示则可能利用PictureBox控件,这是Windows Forms中用于显示图像的常用...
这种方式通过将电话号码转换为图片格式,使得机器难以识别,但不影响人类用户查看和拨打。本文将深入探讨电话号码图片显示的原理、实现方式以及其在ASP(Active Server Pages)环境中的应用。 首先,我们要理解为...
本项目,"C#写的图片生成器",是利用C#的功能实现了一个独特的工具,能够将任意文件转换为图片格式。这个功能在某些情况下非常有用,比如在文件分享时保护数据隐私,或者在网页上展示文档内容。 首先,我们来看C#的...
同时,也可以使用 inPreferredConfig 选项来指定图片的解码格式,从而减少内存的消耗。 例如,下面的代码展示了如何使用 BitmapFactory.Options 来加载大图片: ```java InputStream is = this.getResources()....
C#可以加载和显示BMP、JPEG、PNG等格式的图片,通过`PictureBox`控件或者直接操作GDI+ API实现。 【Visual Studio 2005】 Visual Studio 2005是微软的一个集成开发环境(IDE),支持多种编程语言,包括C#。开发者...
TImage组件可以加载各种图像格式,如JPEG、PNG、BMP等,并且能够进行缩放、平移等操作。开发者可能还使用了第三方库,如GDI+或FreeImage,以支持更多图像格式和增强显示效果。 2. **图片查找**:图片查找功能通常是...
可支持多种图片格式 (GIF/JPG/BMP/TIFF) ' 3。远程配置文件、图片远程路径 可支持多种读取方法或协议 (HTTP/FTP/共享路径/本地路径) ' 4。后台运行,占用系统资源小。(物理内存约 600KB,虚拟内存约 1400KB) '...
2. 图像文件格式:图片浏览器需要支持常见的图像文件格式,如JPEG、PNG、BMP等。这需要对这些文件格式的理解,以及利用适当的方法读取和解析它们。 3. GUI设计:MyViewer的用户界面可能是使用Windows Forms或WPF...
C#具有类型安全、垃圾回收、自动内存管理等特性,使得编写高效且稳定的代码变得容易。 2. **图像处理**: 在C#中处理图像,通常会用到System.Drawing命名空间下的类。这个命名空间提供了Bitmap、Image、Graphics等...
此外,"Picture View Tool"很可能支持常见的图片格式,如JPEG、PNG、BMP等。在C#中,这些格式可以通过Image类的FromFile方法加载,系统会自动根据文件扩展名选择合适的编码解码器。为了支持更多格式,开发者可能需要...
9. 图像格式转换:C# .NET支持多种图像格式,如JPEG、PNG、BMP等,可以使用Image类的Save方法指定格式进行转换。 10. 图像处理库:除了System.Drawing,还有许多第三方库如AForge.NET、Emgu CV等,它们提供了更丰富...
3. **保存图片**:捕获并编辑后的图像可以保存为多种格式,如JPG、PNG或BMP。这通过`Image.Save()`方法完成,需要指定保存路径和文件格式。 4. **用户界面**:C#的Windows Forms或WPF框架可用于创建用户友好的界面...
【压缩包子文件的文件名称列表】中包含的都是图像文件(.bmp、.gif、.jpg)和可能的封面图片(.pdf、.epub、.txt),这些通常是与UI设计、图书制作或者多媒体元素相关的。在Java编程中,可以使用Java的内置类如`...
这个“validpic.zip”压缩包包含了一套学习验证码识别的资源,特别关注256色BMP图片验证码的处理。在IT领域,理解和创建验证码识别系统是Web开发和人工智能(AI)中的一个重要课题。 首先,我们来看看压缩包中的...