网上有c#,但实在不知道该如何转换。

public class ViewDWG

{

//C# TO JAVA CONVERTER WARNING: Java does not allow user-defined value types. The behavior of this class will differ from the original:

//ORIGINAL LINE: struct BITMAPFILEHEADER

private final static class BITMAPFILEHEADER

{

public short bfType;

public int bfSize;

public short bfReserved1;

public short bfReserved2;

public int bfOffBits;

public BITMAPFILEHEADER clone()

{

BITMAPFILEHEADER varCopy = new BITMAPFILEHEADER();

varCopy.bfType = this.bfType;

varCopy.bfSize = this.bfSize;

varCopy.bfReserved1 = this.bfReserved1;

varCopy.bfReserved2 = this.bfReserved2;

varCopy.bfOffBits = this.bfOffBits;

return varCopy;

}

}

public final Image GetDwgImage(String FileName)

{

if (!((new java.io.File(FileName)).isFile()))

{

throw new FileNotFoundException("文件没有被找到");

}

FileStream DwgF; //文件流

int PosSentinel; //文件描述块的位置

BinaryReader br; //读取二进制文件

int TypePreview; //缩略图格式

int PosBMP; //缩略图位置

int LenBMP; //缩略图大小

short biBitCount; //缩略图比特深度

BITMAPFILEHEADER biH = new BITMAPFILEHEADER(); //BMP文件头,DWG文件中不包含位图文件头,要自行加上去

//C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:

//ORIGINAL LINE: byte[] BMPInfo;

byte[] BMPInfo; //包含在DWG文件中的BMP文件体

MemoryStream BMPF = new MemoryStream(); //保存位图的内存文件流

BinaryWriter bmpr = new BinaryWriter(BMPF); //写二进制文件类

Image myImg = null;

try

{

DwgF = new FileStream(FileName, FileMode.Open, FileAccess.Read); //文件流

br = new BinaryReader(DwgF);

DwgF.Seek(13, SeekOrigin.Begin); //从第十三字节开始读取

PosSentinel = br.ReadInt32(); //第13到17字节指示缩略图描述块的位置

DwgF.Seek(PosSentinel + 30, SeekOrigin.Begin); //将指针移到缩略图描述块的第31字节

TypePreview = br.ReadByte(); //第31字节为缩略图格式信息,2 为BMP格式,3为WMF格式

if (TypePreview == 1)

{

}

else if (TypePreview == 2 || TypePreview == 3)

{

PosBMP = br.ReadInt32(); //DWG文件保存的位图所在位置

LenBMP = br.ReadInt32(); //位图的大小

DwgF.Seek(PosBMP + 14, SeekOrigin.Begin); //移动指针到位图块

biBitCount = br.ReadInt16(); //读取比特深度

DwgF.Seek(PosBMP, SeekOrigin.Begin); //从位图块开始处读取全部位图内容备用

BMPInfo = br.ReadBytes(LenBMP); //不包含文件头的位图信息

br.Close();

DwgF.Close();

biH.bfType = 19778; //建立位图文件头

if (biBitCount < 9)

{

biH.bfSize = 54 + 4 * (int)(Math.pow(2, biBitCount)) + LenBMP;

}

else

{

biH.bfSize = 54 + LenBMP;

}

biH.bfReserved1 = 0; //保留字节

biH.bfReserved2 = 0; //保留字节

biH.bfOffBits = 14 + 40 + 1024; //图像数据偏移

//以下开始写入位图文件头

bmpr.Write(biH.bfType); //文件类型

bmpr.Write(biH.bfSize); //文件大小

bmpr.Write(biH.bfReserved1); //0

bmpr.Write(biH.bfReserved2); //0

bmpr.Write(biH.bfOffBits); //图像数据偏移

bmpr.Write(BMPInfo); //写入位图

BMPF.Seek(0, SeekOrigin.Begin); //指针移到文件开始处

myImg = Image.FromStream(BMPF); //创建位图文件对象

bmpr.Close();

BMPF.Close();

}

return myImg;

}

catch (RuntimeException ex)

{

throw new RuntimeException(ex.getMessage());

}

}

}

2011年9月07日 15:49

java dwg文件_如何用java实现dwg的预览图?相关推荐

  1. java 网络爬虫_如何用Java实现网络爬虫

    原标题:如何用Java实现网络爬虫 微信公众号"书圈"后台回复[Javapachong1],下载本例的PPT和源码 作品描述 本章作品是一个能够抓取指定网站ACM比赛信息的爬虫.A ...

  2. java 判断手机号_如何用java判断手机号运营商?

    如何用java实现判断手机号的运营商?因为每个号段都是工信部规定划分给指定运营商的,所以我们可以通过手机号码的号段来判断. 现在手机号的号段那么多,要怎样方便的的判断呢?于是我们就想到了正则表达式,在 ...

  3. 使用pdf.js来预览pdf文件_适用于Dynamics365与PowerApps的注释预览组件

    powerapps/dynamics365适用的注释预览/批量下载组件 自定义组件为预览功能 原生预览支持的文件类型:图像,zip,音频,pdf 支持批量打包注释为zip下载到本地 使用浏览器预览支持 ...

  4. h5页面如何预览excel文件_移动端页面,如何解析预览 word/excel/PDF文件?

    展开全部 利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成swf格式的Flash文件,网页中加 ...

  5. java data是什么文件_如何用java实现 读取一个data类型文件 并显示出来(随便选择一种类型txt或者word)...

    展开全部 参考下面的程序32313133353236313431303231363533e4b893e5b19e31333264626635,基本上已经包含了文件读取的所有方式,这也是我之前学习的一个 ...

  6. 文件比较 java 标红_如何用java输出word里红色的字体,

    展开全部 java读取word文件,并输出红色字体,主要采用的是开62616964757a686964616fe78988e69d8331333337613737源的读取框架,例如Jword,示例如下 ...

  7. mysql导出七张表成dtf文件_如何用Java实现把excel表中的数据导入到mysql数据库已有的表中?...

    展开全部 java 读excel 还是比较方便简单的,原理就是,先用java 读取excel,然后,一行行的写入数据库,字段的话32313133353236313431303231363533e4b8 ...

  8. java 读取css文件_如何用java解析css文件?

    1.如何更换空间背景? 打开高级设置,再自定义CSS,看到里面的第3行和第4行都是 header div.lc{background:url(header div.lc{background:url ...

  9. java mp3 信息_如何用Java读取MP3文件的Tag信息

    展开全部 以随机读写方式打开一个MP3文件 将文件指针偏移量移动到文件长度倒数128位 判断标签头"TAG"是否存在 读取62616964757a686964616fe78988e ...

最新文章

  1. 多线程环境中安全使用集合API(含代码)
  2. 学习opengl(起步)
  3. tf input layer
  4. web.xml 文件中的配置节的加载顺序
  5. html语言书写注意事项,HTML注意事项(学习笔记)
  6. linux执行.sql脚本 db2,DB2 如何执行sql脚本
  7. html5 客户端数据缓存机制,深入理解HTML5离线缓存机制
  8. 关于PHP的错误机制总结
  9. 键盘定位板图纸_罗技K750 SOLAR太阳能无线键盘评测
  10. iOS 提升交互之根据多个UITextField的编辑状态改变按钮状态
  11. AC日记——单词倒排 1.7 28
  12. 高效工作的浏览器插件
  13. LTO磁带机清洁准则
  14. html 消除序号,JS实现删除一行数据页面序号重新排序功能。
  15. 云队友丨新品牌的营销大战:砸进上百万,苦心博出圈
  16. FFT 快速傅里叶变换 初探
  17. 使用多可用区Kubernetes进行灾难恢复
  18. SANGFOR SCSA——linux系统基础
  19. MySQL8.0 存储过程和函数
  20. 深度学习基础--分类网络

热门文章

  1. Mac 查看本机ip地址
  2. jupyter安装php,如何安装jupyter
  3. 电信管理局:2011推进三网融合走向深入
  4. 百万奖补!2022年湖北省双创战略团队申报条件、材料和支持奖补
  5. MATLAB遗传神经网络算法学习
  6. 一种快速生成边界交通场景数据的新方法
  7. 用户标签系统 数据库设计
  8. 建立学习型组织 - 解决了我几年的困惑
  9. Linux紧急模式问题处理方法
  10. iqoo一代充电测试软件,iqoo7充电速度测试(iqoo7充电测试)