java生成tif图片的缩略图,读取24位 BMP 图像并生成 JPG 缩略图

该博客介绍了如何使用Java读取24位BMP图像,并生成JPG缩略图。通过读取BMP文件头和信息头获取图像尺寸等信息,然后解析像素数据创建Image对象,最后进行图像压缩和输出。
摘要由CSDN通过智能技术生成

前言

在任何一个综合性网站,我们往往需要上传一些图片资料。但随着高分辨率DC的普及,上传的图片容量会很大,比如300万象素DC出来的文件基本不下600K。为了管理方便,大家可能不愿意每次都用ACDsee修改它,而直接上传到服务器。但是这种做法在客户端看来就没有那么轻松了,对于拨号上网的用户简直是一场恶梦,虽然你可以在图片区域设置wide和high!

上一篇文章中(http://www.blogjava.net/rosen/archive/2007/06/12/9940.html)我主要介绍了JPG(JEPG)、GIF、PNG图像的读取及压缩方法,遗憾的是不支持BMP图像。本文一鼓作气、再接再厉,一举解决了这个问题!

程序代码

package BMP;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.image.BufferedImage;

import java.awt.image.MemoryImageSource;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class BMPReader{

public String Reader(){

Image image;                                    //构造一个目标图

String result="";                               //返回结果

try{

FileInputStream fs=new FileInputStream("/test.BMP");

int bflen=14;

byte bf[]=new byte[bflen];

fs.read(bf,0,bflen);                       //读取14字节BMP文件头

int bilen=40;

byte bi[]=new byte[bilen];

fs.read(bi

Java GDAL是一种用于处理地理数据的开源库。tif文件是一种常见的栅格图像格式。生成缩略图是指从一个大尺寸的图像文件中创建一个较小尺寸的预览图像。 要在Java中使用GDAL库生成缩略图,需要先安装GDAL库,并将其添加到Java项目的类路径中。然后,可以使用GDAL的Java绑定来进行图像处理操作。 首先,需要使用GDAL打开tif文件: ```java Dataset dataset = gdal.Open("input.tif", gdalconstConstants.GA_ReadOnly); ``` 然后,获取原始图像的宽度和高度: ```java int width = dataset.GetRasterXSize(); int height = dataset.GetRasterYSize(); ``` 接下来,可以指定缩略图的目标尺寸,比如将原始图像缩小到宽度和高度的一半: ```java int thumbnailWidth = width / 2; int thumbnailHeight = height / 2; ``` 创建一个用于存储缩略图的内存驱动器: ```java Driver driver = gdal.GetDriverByName("MEM"); Dataset thumbnailDataset = driver.Create("", thumbnailWidth, thumbnailHeight, 3, gdalconstConstants.GDT_Byte); ``` 使用Rescale函数将原始图像数据复制到缩略图中: ```java double[] rescaleParams = new double[] { 0, 255, 0, 255, 0, 255 }; gdal.ReprojectImage(dataset, thumbnailDataset, null, null, gdalconstConstants.GRA_NearestNeighbour, 0, rescaleParams, null, null); ``` 最后,将缩略图保存到文件或进行其他处理: ```java driver = gdal.GetDriverByName("PNG"); thumbnailDataset.SetProjection(dataset.GetProjection()); thumbnailDataset.SetGeoTransform(dataset.GetGeoTransform()); thumbnailDataset.FlushCache(); thumbnailDataset.WriteRaster(0, 0, thumbnailWidth, thumbnailHeight, thumbnailData); thumbnailDataset.GetRasterBand(1).FlushCache(); thumbnailDataset.delete(); ``` 这样就可以使用Java GDAL库生成缩略图缩略图的大小和其他参数可以根据需要进行调整,以实现所需的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值