(Java实现)HTML转JPG,TIFF等图片格式和TIFF图片合并功能解决方案。

        上一篇文章说到了HTML转PDF的实现方式,而就在那个需求的另外一个方面,项目要求要实现页面转图片的需求,主要是JPG,TIFF,PNG等格式。弄得我有点囧,上次一直没搞定。也没找到合适的工具进行转换。

        前一小段时间,发现Apache的一个开源工具,可以把PDF转成图片,没有直接从HTML转图片的jar包,就只能曲线救国了。

忘了介绍了。PDF转图片的包叫做apache pdfBox 右边是:pdfbox的官网 pdfBox官网

下面直接贴代码了:

public void convertToTiff(String pdfFilePath, String tiffFileName)
			throws Exception {
		
		 PDDocument doc = PDDocument.load(pdfFilePath);
	        int pageCount = doc.getPageCount(); 
	        List pages = doc.getDocumentCatalog().getAllPages(); 
	        List<File> files = new ArrayList<File>();
	        List<File> deleteFiles = new ArrayList<File>();
	        
	        
	        for(int i=0;i<pages.size();i++){
	            PDPage page = (PDPage)pages.get(i); 
	            BufferedImage image = page.convertToImage(BufferedImage.TYPE_BYTE_BINARY, 300);
	             
            
            Iterator iter = ImageIO.getImageWritersBySuffix("jpg"); 
            ImageWriter writer = (ImageWriter)iter.next(); 
            File outFile = new File("C:/1"+i+".jpg"); 
            FileOutputStream out = new FileOutputStream(outFile); 
            
            ImageOutputStream outImage = ImageIO.createImageOutputStream(out); 
            writer.setOutput(outImage); 
            writer.write(new IIOImage(image,null,null)); 
            
            
            this.jpg2tif("C:/1"+i+".jpg", "C:/1"+i+".tif");
            files.add(new File("C:/1"+i+".tif")); 
            deleteFiles.add(outFile);
            deleteFiles.add(new File("C:/1"+i+".tif"));
            
            
            outImage.close();
            out.close();
            writer.dispose();
		}
		
        if(files != null){
        	this.tif2Marge(files, "C:/1.tif");
        }
	}
/**
	 * 将jpg格式转化为tif格式。
	 * @param srcFile  需要装换的源文件
	 * @param descFile 装换后的转存文件
	 * @throws Exception
	 */
	public void jpg2tif(String srcFile, String descFile) throws Exception {
		RenderedOp src = JAI.create("fileload", srcFile);
		OutputStream os = new FileOutputStream(descFile);
		TIFFEncodeParam param = new TIFFEncodeParam();
		param.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2); 
		ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF", os, param);
		encoder.encode(src);
		os.close();
	}

	/**
	 * 将若干tif文件合同为一个tif文件
	 * @param srcFile
	 * @param descFile
	 * @throws Exception
	 */
	public void tif2Marge(List<File> srcFile, String descFile) throws Exception {
		List pages = new ArrayList(srcFile.size() - 1);
		
		for (int i = 0; i < srcFile.size(); i++) {
			RenderedOp firstpage = JAI.create("fileload", srcFile.get(0).getCanonicalPath());
			if(i != 0 ){
				RenderedOp page = JAI.create("fileload", srcFile.get(i).getCanonicalPath());
				pages.add(page);
			}
			OutputStream os = new FileOutputStream(descFile);
			TIFFEncodeParam param = new TIFFEncodeParam();
			param.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2); 
			param.setExtraImages(pages.iterator());
			ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF", os, param);
			encoder.encode(firstpage);
			firstpage.dispose();
			for (int j = 1; j < pages.size(); j++) {
				((RenderedOp) pages.get(j)).dispose();
			}
			os.close();
			pages.clear();
		}
	}



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 可以使用MATLAB中的imwrite函数来将jpg图片换为tiff格式。使用方法如下: 首先,读取jpg图片: ``` img = imread('image.jpg'); ``` 然后使用imwrite函数将图片保存为tiff格式: ``` imwrite(img, 'image.tiff'); ``` 如果要保存为压缩的tiff格式,可以使用以下代码: ``` imwrite(img, 'image.tiff', 'compression', 'jpeg'); ``` 其中,compression参数指定压缩算法,可以设置为'jpeg'(表示使用JPEG压缩算法)、'packbits'(表示使用PackBits压缩算法)或'none'(表示不压缩)。 希望这些信息能帮到你! ### 回答2: 用MATLAB可以很方便地将jpg图片格式换成tiff格式。下面是一个简单的示例代码: ```matlab % 读入jpg图片 img = imread('input.jpg'); % 获取输入图片的信息 info = imfinfo('input.jpg'); % 将jpg格式换为tiff格式 imwrite(img, 'output.tiff', 'Compression', 'lzw', 'ResolutionUnit', info.Unit, 'XResolution', info.XResolution, 'YResolution', info.YResolution); % 打印换成功的消息 disp('换成功!'); ``` 代码步骤解析: 1. 使用`imread`函数读入jpg图片,将图片数据存储在`img`变量中。 2. 使用`imfinfo`函数获取输入图片的信息,存储在`info`变量中,这些信息包括单位和分辨率等。 3. 使用`imwrite`函数将`img`数据以tiff格式写入到文件`output.tiff`中,`Compression`参数设为`lzw`表示使用LZW压缩算法。 4. 将`tiff`图片的单位和分辨率等信息设置为与输入图片相同,使用`info.Unit`,`info.XResolution`和`info.YResolution`等参数。 5. 使用`disp`函数打印换成功的消息。 以上代码示例了如何使用MATLAB将jpg图片格式换成tiff格式,你可以替换`input.jpg`为你自己的jpg图片文件路径,然后运行代码就可以得到你想要的tiff格式图片了。 ### 回答3: 可以使用MATLAB的Image Processing Toolbox中的imread函数来读取jpg图片,并使用imwrite函数将其换为tiff格式。 下面是一个简单的MATLAB代码示例: ```matlab % 读取jpg图片 image = imread('input.jpg'); % 将jpg图片换为tiff格式并保存 imwrite(image, 'output.tiff'); ``` 在这个示例中,首先使用imread函数读取名为input.jpgjpg图片,并将其存储在名为image的变量中。然后,使用imwrite函数将这个图片变量以tiff格式保存到名为output.tiff的文件中。 在实际使用时,你需要将'input.jpg'替换为你实际的jpg图片路径,并将'output.tiff'替换为你想要保存的tiff图片路径。 需要注意的是,MATLAB中的imwrite函数支持多种图片格式换,包括tiff格式。你可以根据需要在函数的第二个参数中指定想要的图片格式。 希望以上回答对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值