java dwg文件_如何用java实现dwg的预览图?
网上有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的预览图?相关推荐
- java 网络爬虫_如何用Java实现网络爬虫
原标题:如何用Java实现网络爬虫 微信公众号"书圈"后台回复[Javapachong1],下载本例的PPT和源码 作品描述 本章作品是一个能够抓取指定网站ACM比赛信息的爬虫.A ...
- java 判断手机号_如何用java判断手机号运营商?
如何用java实现判断手机号的运营商?因为每个号段都是工信部规定划分给指定运营商的,所以我们可以通过手机号码的号段来判断. 现在手机号的号段那么多,要怎样方便的的判断呢?于是我们就想到了正则表达式,在 ...
- 使用pdf.js来预览pdf文件_适用于Dynamics365与PowerApps的注释预览组件
powerapps/dynamics365适用的注释预览/批量下载组件 自定义组件为预览功能 原生预览支持的文件类型:图像,zip,音频,pdf 支持批量打包注释为zip下载到本地 使用浏览器预览支持 ...
- h5页面如何预览excel文件_移动端页面,如何解析预览 word/excel/PDF文件?
展开全部 利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成swf格式的Flash文件,网页中加 ...
- java data是什么文件_如何用java实现 读取一个data类型文件 并显示出来(随便选择一种类型txt或者word)...
展开全部 参考下面的程序32313133353236313431303231363533e4b893e5b19e31333264626635,基本上已经包含了文件读取的所有方式,这也是我之前学习的一个 ...
- 文件比较 java 标红_如何用java输出word里红色的字体,
展开全部 java读取word文件,并输出红色字体,主要采用的是开62616964757a686964616fe78988e69d8331333337613737源的读取框架,例如Jword,示例如下 ...
- mysql导出七张表成dtf文件_如何用Java实现把excel表中的数据导入到mysql数据库已有的表中?...
展开全部 java 读excel 还是比较方便简单的,原理就是,先用java 读取excel,然后,一行行的写入数据库,字段的话32313133353236313431303231363533e4b8 ...
- java 读取css文件_如何用java解析css文件?
1.如何更换空间背景? 打开高级设置,再自定义CSS,看到里面的第3行和第4行都是 header div.lc{background:url(header div.lc{background:url ...
- java mp3 信息_如何用Java读取MP3文件的Tag信息
展开全部 以随机读写方式打开一个MP3文件 将文件指针偏移量移动到文件长度倒数128位 判断标签头"TAG"是否存在 读取62616964757a686964616fe78988e ...
最新文章
- 多线程环境中安全使用集合API(含代码)
- 学习opengl(起步)
- tf input layer
- web.xml 文件中的配置节的加载顺序
- html语言书写注意事项,HTML注意事项(学习笔记)
- linux执行.sql脚本 db2,DB2 如何执行sql脚本
- html5 客户端数据缓存机制,深入理解HTML5离线缓存机制
- 关于PHP的错误机制总结
- 键盘定位板图纸_罗技K750 SOLAR太阳能无线键盘评测
- iOS 提升交互之根据多个UITextField的编辑状态改变按钮状态
- AC日记——单词倒排 1.7 28
- 高效工作的浏览器插件
- LTO磁带机清洁准则
- html 消除序号,JS实现删除一行数据页面序号重新排序功能。
- 云队友丨新品牌的营销大战:砸进上百万,苦心博出圈
- FFT 快速傅里叶变换 初探
- 使用多可用区Kubernetes进行灾难恢复
- SANGFOR SCSA——linux系统基础
- MySQL8.0 存储过程和函数
- 深度学习基础--分类网络