Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将多个tif和Jpeg组合成单个tif文件大

我正在尝试将多个tif和jpeg文件合并为单个tif文件。

当多个tif文件单独合并为一个tif文件时,该文件的大小几乎与原始多个tif文件的大小相同(10MB的多个tif文件->10MB的单个tif文件)。这太完美了。

然而,当单独将具有许多Jpeg文件tif文件组合成单个tif文件时,与原始文件相比(10MB的多个tif和Jpeg文件导致创建200MB的tif文件),文件大小很大。

有没有办法防止当JPEG文件到来时文件太大?

使用的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List<BufferedImage> bufferedImageList = new ArrayList<>();
for (String page : pages) {
BufferedImage bufferedImage = ImageIO.read(file);
    bufferedImageList.add(bufferedImage);
}

String filename = "D:\home\example.tif";
ImageWriter writer = ImageIO.getImageWritersByFormatName("TIF").next();

try (ImageOutputStream output = ImageIO.createImageOutputStream(new File(filename))) {
    writer.setOutput(output);

    ImageWriteParam params = writer.getDefaultWriteParam();
    params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);

    params.setCompressionType("LZW");
    params.setCompressionQuality(1.0f);

    writer.prepareWriteSequence(null);

    for (BufferedImage image : bufferedImageList) {
        writer.writeToSequence(new IIOImage(image, null, null), params);
    }
    
    
    writer.endWriteSequence();
    
}

writer.dispose();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 13:14:10

正如@Henry在评论中所写的那样,使用LZW (或任何其他无损)压缩不会实现与有损JPEG (对于“自然”图像)相同的压缩效果。在大多数情况下,这样做会产生更大的文件,但质量最高。在许多情况下,这是可以接受的。

另一种方法是通过指定compressionType "JPEG",在TIFF文件中也使用JPEG压缩。您可能还需要将compressionQuality设置为较低的值(我相信0.7f是ImageIO中JPEG的默认设置),以获得更合理的文件大小。

然而,使用JPEG压缩来重新压缩已经被JPEG压缩的图像,将引入"generational loss",因为JPEG通常不能被完美地重建。通过使用与原始表相同的表重新压缩,在技术上可以将这种质量损失保持在最低限度,但这在实践中很难实现,因为编码器/解码器(即,最好的办法是使用与编写原始代码相同的编码器,使用完全相同的参数)。

第三种选择是使用/创建一个特殊用途的TIFF实用程序,它可以在新的TIFF容器中按原样存储JPEG流。这些文件可能不是超高效的TIFF,因为它们不支持条带/平铺等,并且一些非标准输入可能仍然需要重写才能产生有效的TIFF。这将是一项更多的工作,并需要一些关于TIFF格式的深入知识,但肯定是可行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63872701

复制
相关文章
TIFF文件切割_tif文件分割
TIFF文件由于可以存储多种形式的数据类型,也可以存储大量的数据,故其体积比较大,如果我们想截取其中的一部分图片数据,如下图:
全栈程序员站长
2022/11/17
1.5K0
TIFF文件切割_tif文件分割
GDAL计算平均值的图(tif)
假如你手上有100000张v26h8的ndvi,modis数据,这时候你想知道他们平均的结果。。。改使用如下代码。。。。废话不多说:
一个有趣的灵魂W
2020/09/15
2K0
GDAL计算平均值的图(tif)
python_gis实现批量tif转换jpg
目的:将tif格式的遥感图片转换为jpg,匹配下级的I/O操作 why:其实基于linux的convert命令集合bash可以做到普通的tif转jpg,但是对于遥感的图片,也就是栅格数据是不支持这样的转换的,好像是因为tif的格式是32位的,但是普通的图片只有8位数。
火星娃统计
2022/01/06
1.9K0
python_gis实现批量tif转换jpg
GlboalMapper20如何把mbt转为tif
mbt是一种瓦片的单文件存储,打开浏览的速度都非常快。部分GIS软件支持度不是很好,比如ArcGIS等,用这些软件做分析的时候,无法直接基于mbt来做。就需要把mbt转为tif。
全栈程序员站长
2022/11/17
9620
GlboalMapper20如何把mbt转为tif
matlab读取tif图像并显示_matlab关闭窗口
info = imfinfo(filename,fmt) %输入图像名,图像的格式
全栈程序员站长
2022/11/09
7400
MOD043km的hdf数据转为tif
gdal.open(r'D:/Thesis/ML/modis3km/MOD04_3K.A2018001.0320.061.2018003202214.hdf')
一个有趣的灵魂W
2020/09/15
1.9K0
MOD043km的hdf数据转为tif
tcpdf中文字体_pdf和tif有什么区别
最近在做将网页内容输出成pdf文档方面的一个项目,找了好多类,php_pdflib,fpdf,HTML_topdf等等,不过最终还是发现这个好用,究其汉字处理方面发现了写一篇文章,就抄过来了,以供大家参考。
全栈程序员站长
2022/10/04
4.1K0
不争气啊!写论文时,Word又崩溃了
写论文时,本来就是绞尽脑汁的时候。此时,如果word反复崩溃,估计瞬间就想砸掉电脑了。
Mark Chen
2020/12/24
9480
EasyUI+SpringMVC 单个/多个文件上传
function uplodad( $('#fromNameId').form({ url:'controllerurl', onSubmit: function(){ //uploda before something }, success:function(data){ //upload after something },error:function(date){ $.messager.alert(data.errormsg); } }); $('#fromNameId').submit(); );
用户5640963
2019/07/28
1.5K0
C# 将多个图片合并成TIFF文件的两种方法(续集)
为啥名称后面加个续集呢,因为之前有位仁兄写过一篇,我是在他的基础上继续开发和探索的,他那篇文章的链接:
用户9127601
2022/01/13
1.3K0
C# 将多个图片合并成TIFF文件的两种方法(续集)
ArcGIS:读取nc格式文件并导出为tif格式文件,降雨或温度NC等数据
2.输入nc文件,其他参数可忽略,点击确定 3.创建好后,右键点击图层,点击属性,选择“NetCDF”,然后选择波段纬度,接着点击纬度对应的值,这里维度值对应的是时间,选择任意一个时间。
Twcat_tree
2023/10/16
5.2K0
ArcGIS:读取nc格式文件并导出为tif格式文件,降雨或温度NC等数据
Python—图像基本操作以及图像格式转
关于图像处理的模块常用的有 PIL,openCV等,不过应为要处理 tif 格式的图片,故特来写下这篇博客。 关于安装模块 libtiff 直接pip install libtiff 安装模块,发现无法导入,显示“No module named libtiff” ,打开anaconda prompt 执行conda list显示模块确实已经安装。尝试了把libtiff移除再重装还是没解决。
py3study
2020/01/06
1.6K0
【技能分享】转图片格式用这方法,一分钟能转几百张+,高效!
将tif格式的图片转成jpg。 tif格式的图片可能分散在文件夹中,所以最好可以遍历一下子文件什么的。
数据处理与分析
2021/11/30
3910
WRF中如何使用SRTM的3s高分辨率地形数据集
WRF中地形数据(海拔高度)分辨率最高为30s,差不多就是900m,当模型空间分辨率较高时,比如在低于1km的情况下,经常会考虑增加地形高度的分辨率,这里使用美国的SRTM( Shuttle Radar Topography Mission)的DEM数据,这个数据覆盖了全球陆地,在美国本地分辨率为1s,其他地区为3s(约90m),因此使用这个更高分辨率数据来测试一下。
自学气象人
2023/06/21
1.2K0
WRF中如何使用SRTM的3s高分辨率地形数据集
实用!这个插件可以让PPT导出指定分辨率的TIF图片
很早之前,我们就提到修改PPT注册表文件可以设置PPT科研绘图导出图片的分辨率:
百味科研芝士
2021/09/03
6.9K0
实用!这个插件可以让PPT导出指定分辨率的TIF图片
依据矢量要素批量分割栅格为多部分:ArcPy
  本文介绍基于Python中ArcPy模块,基于具有多个面要素的要素类,批量分割大量栅格图像的方法。
疯狂学习GIS
2023/10/19
4460
依据矢量要素批量分割栅格为多部分:ArcPy
依据矢量要素批量分割栅格为多部分:ArcPy
  本文介绍基于Python中ArcPy模块,基于具有多个面要素的要素类,批量分割大量栅格图像的方法。
疯狂学习GIS
2023/10/19
3300
依据矢量要素批量分割栅格为多部分:ArcPy
OpenFileDialog Filter属性设置所有图片格式
OpenFileDialog _dialog = new OpenFileDialog(); _dialog.Filter =  "All Image Files|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png;*.tif;*.tiff|" "Windows Bitmap(*.bmp)|*.bmp|" "Windows Icon(*.ico)|*.ico|" "Graphics Interchange Format (*.gif)|(*.gif)|" "JPEG File Inte
跟着阿笨一起玩NET
2018/09/18
2.8K0
PDF Plus for Mac(PDF处理工具)
PDF Plus Mac版是Mac平台上的一款PDF文档处理工具,功能强大,只需三个简单的步骤即可帮助您合并,拆分,加水印和裁切PDF文档。
皮西歪
2023/04/13
2.1K0
PDF Plus for Mac(PDF处理工具)
java判断文件是否为图片格式_java读取图片流
在上传图片文件的时候除了需要限制文件的大小,通常还需要对文件类型进行判断。因为用户可能会上传任何东西上来,如果被有心人上传木马到你服务器那就麻烦了。
全栈程序员站长
2022/10/04
2.9K0
java判断文件是否为图片格式_java读取图片流

相似问题

如何将多个tif文件合并为单个tif文件?

25

如何将多个多页tif文件组合为单个tif

10

Python:将TIF转换为JPEG

118

CCITT .tif文件与jpeg压缩.tif文件的区别是什么

11

如何测试多个.tif文件?

134
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文