javatif格式的简单介绍

博主:adminadmin 2022-12-02 17:30:12 71

今天给各位分享javatif格式的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 实现 tif图片(多页的)转换成jpg

多页单个tif文件转换为多个jpg文件

需要官方的一些包支持(具体参考源码),上网找找即可。

源码:

-------------------------

import java.io.*;

import com.sun.media.jai.codec.FileSeekableStream;

import com.sun.media.jai.codec.ImageDecoder;

import com.sun.media.jai.codec.ImageCodec;

import com.sun.media.jai.codec.TIFFEncodeParam;

import com.sun.media.jai.codec.TIFFDecodeParam;

import com.sun.media.jai.codec.JPEGEncodeParam;

import java.awt.image.RenderedImage;

import javax.media.jai.RenderedOp;

import javax.media.jai.JAI;

import java.awt.image.renderable.ParameterBlock;

public class MultiPageRead {

public static void main(String[] args) throws IOException {

new MultiPageRead().doitJAI();

}

public void doitJAI() throws IOException {

FileSeekableStream ss = new FileSeekableStream("./zhaoming.tif");

TIFFDecodeParam param0 = null;

TIFFEncodeParam param = new TIFFEncodeParam();

JPEGEncodeParam param1 = new JPEGEncodeParam();

ImageDecoder dec = ImageCodec.createImageDecoder("tiff", ss, param0);

int count = dec.getNumPages();

param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);

param.setLittleEndian(false); // Intel

System.out.println("This TIF has " + count + " image(s)");

for (int i = 0; i count; i++) {

RenderedImage page = dec.decodeAsRenderedImage(i);

File f = new File("./fk_" + i + ".jpg");

System.out.println("Saving " + f.getCanonicalPath());

ParameterBlock pb = new ParameterBlock();

pb.addSource(page);

pb.add(f.toString());

pb.add("JPEG");

pb.add(param1);

//JAI.create("filestore",pb);

RenderedOp r = JAI.create("filestore",pb);

r.dispose();

//RenderedOp op = JAI.create("filestore", page, "./zhaoming_" + i + ".jpg", "JPEG", param1);

}

}

}

java生成TIFF图像用于传真。

jpg和jpeg是有损压缩

bmp是位图

gif是无损压缩,一般用于动画

BMP位图格式(文件扩展名为BMP)

它是用于WINDOWS和OS/2的位图(BITMAP)格式,文件几乎不压缩,占用磁盘空间较大,它的颜色存储格式有1位、4位、8位及24位。开发WINDO-WS环境下的软件时,BMP格式是最不容易出问题的格式,并且DOS与WINDO-WS环境下的图象处理软件都支持该格式,因此,该格式是当今应用比较广泛的一种格式。但缺点是该格式文件比较大,所以只能应用在单机上,不受网络欢迎。

COMPUSERVE GIF格式(文件扩展名为GIF)

这种格式是由COMPUSERVER公司设计的,GIF是GRAPHICS INTER CHA-NGE FORMAT的缩写,分为87a及89a两种版本,存储格式由1位到8位。GIF格式是经过压缩的格式,磁盘空间占用较少。由于它是制作2D动画软件Animator早期支持的文件格式,所以该格式曾被广泛使用。但由于8位存储格式的限制,使其不能存储超过256色的图象。虽然如此,但该图形格式却在Internet上被广泛地应用,原因主要有两个:1、256种颜色已经较能满足Internet上的主页图形需要。2、该格式生成的文件比较地小,适合像Internet这样的网络环境传输和使用。

意思相同,就像htm和html是同一意思一样,

JPEG=JPG是Joint Photographic Experts Group(联合图像专家组)的缩写,文件后辍名为".jpg"或".jpeg",是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。

JPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式,在 Photoshop软件中以JPEG格式储存时,提供11级压缩级别,以0—10级表示。其中0级压缩比最高,图像品质最差。即使采用细节几乎无损的10 级质量保存时,压缩比也可达 5:1。以BMP格式保存时得到4.28MB图像文件,在采用JPG格式保存时,其文件仅为178KB,压缩比达到24:1。经过多次比较,采用第8级压缩为存储空间与图像质量兼得的最佳比例。

PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法。

PNG图片文件一般应用于JAVA程序中,或网页或S60程序中是因为它压缩比高,生成文件容量小。

tiff我也没听说过,搜到了,太多不贴了,在这

dib也没听过,直接自己看详细的吧

你说的那个buf更是搜都搜不到

java给tif格式图片加文字水印?

package com.coderli.image;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

import javax.imageio.ImageIO;

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

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

  

@SuppressWarnings("restriction")

public final class ImageUtils {   

    public ImageUtils() {   

  

    }   

  

      

    /**  

     * 打印文字水印图片  

     *   

     * @param pressText  

     *            --文字  

     * @param targetImg --  

     *            目标图片  

     * @param fontName --  

     *            字体名  

     * @param fontStyle --  

     *            字体样式  

     * @param color --  

     *            字体颜色  

     * @param fontSize --  

     *            字体大小  

     * @param x --  

     *            偏移量  

     * @param y  

     */  

  

    public static void pressText(String pressText, String targetImg,   

            String fontName, int fontStyle, Color color, int fontSize, int x,   

            int y) {   

        try {   

            File _file = new File(targetImg);   

            Image src = ImageIO.read(_file);   

            int width = src.getWidth(null);   

            int height = src.getHeight(null);   

            BufferedImage image = new BufferedImage(width, height,   

                    BufferedImage.TYPE_INT_RGB);   

            Graphics g = image.createGraphics();   

            g.drawImage(src, 0, 0, width, height, null);   

            g.setColor(color);   

            g.setFont(new Font(fontName, fontStyle, fontSize));   

  

            g.drawString(pressText, width - fontSize - x, height - fontSize   

                    / 2 - y);   

            g.dispose();   

            FileOutputStream out = new FileOutputStream(targetImg);   

            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   

            encoder.encode(image);   

            out.close();   

        } catch (Exception e) {   

            System.out.println(e);   

        }   

    }   

  

    public static void main(String[] args) {   

        pressText("bbs.coderli.com", "f:/1.tiff", "Times New Romas", Font.PLAIN, Color.BLUE, 22,  150, 20);

    }   

}

这个方法里用的api是支持tiff格式的,你可以试试。

裁剪大tif格式文件的问题(java语言实现)

用c++实现的,先做一个对话框,一个按钮

void CTifSliceDlg::OnButton1()

{

IFH ifh; // 文件头

WORD ec; // 目录入口个数

DE *de1, *de2; // 源和目的文件的目录入口

DWORD nextIFD; // 下一个IFD偏移

DWORD offset, width, height; // 图像数据偏移、宽度、高度

UpdateData();

long m_x1 = m_x - m_size / 2;

long m_x2 = m_x + m_size / 2 - 1;

long m_y1 = m_y - m_size / 2;

long m_y2 = m_y + m_size / 2 - 1;

FILE *fp1 = fopen("D:/zxz/imagery.tif", "rb"); // 打开源图

FILE *fp2 = fopen("D:/zxz/" + m_filename + ".tif", "wb"); // 打开目标图

fseek(fp1, 0, SEEK_SET);

fread(ifh, sizeof(ifh), 1, fp1); // 读IFH

if ((ifh.byteOrder == 0x4949) (ifh.version == 0x2a)) // 判断字节顺序和版本是否有问题

{

fseek(fp1, ifh.offsetToIFD, SEEK_SET); // 定位到IFD

fread(ec, 2, 1, fp1); // 读目录入口个数

de1 = new DE[ec];

de2 = new DE[ec];

fread(de1, sizeof(DE), ec, fp1); // 读所有目录入口

memcpy(de2, de1, sizeof(DE) * ec); // 复制为目标图的目录入口

fread(nextIFD, 4, 1, fp1); // 读下一个IFD偏移

if (nextIFD == 0) // 为0表示没有下一个IFD

{

fwrite(ifh, sizeof(ifh), 1, fp2); // IFH写入目标图

fwrite(ec, 2, 1, fp2); // 目录入口个数写入目标图

for (int i = 0; i ec; i++)

{

switch (de2[i].tag)

{

case 256: //宽度

de2[i].valueOffset = m_x2 - m_x1 + 1; // 修改目标图宽度

width = de1[i].valueOffset; // 取源图宽度

break;

case 257: //高度

de2[i].valueOffset = m_y2 - m_y1 + 1; // 修改目标图高度度

height = de1[i].valueOffset; // 取源图高度

break;

case 273: //图像数据偏移

offset = de2[i].valueOffset; // 取源图图像数据偏移

break;

case 278: //图像数据行数

de2[i].valueOffset = m_y2 - m_y1 + 1; // 修改目标图图像数据行数

break;

case 279: //图像数据字节数

de2[i].valueOffset = (m_x2 - m_x1 + 1) * (m_y2 - m_y1 + 1); // 修改目标图图像数据字节数

break;

}

}

fwrite(de2, sizeof(DE), ec, fp2); // 将目录入口写入目标图

fwrite(nextIFD, 4, 1, fp2); // 将下一个IFD偏移写入目标图

long curpos = ftell(fp1);

char *buf = new char[offset - curpos];

fread(buf, offset - curpos, 1, fp1); // 读源图当前位置到图像数据之间的全部字节

fwrite(buf, offset - curpos, 1, fp2); // 写入目标图

delete[] buf;

buf = new char[m_x2 - m_x1 + 1];

for (i = m_y1; i = m_y2; i++)

{

fseek(fp1, offset + (i * width + m_x1), SEEK_SET); // 定位到图像第i行,m_x1处

fread(buf, m_x2 - m_x1 + 1, 1, fp1); // 读m_x1到m_x2之间的数据

fwrite(buf, m_x2 - m_x1 + 1, 1, fp2); // 写入目标图

}

delete[] buf;

}

else

{

MessageBox("文件格式不正确!");

}

delete[] de1;

delete[] de2;

}

else

{

MessageBox("文件格式不正确!");

}

fclose(fp1);

fclose(fp2);

MessageBox("切片成功!");

}

Java如何把一个PDF转为tif

安装Office时,默认安装Microsoft Office Document Image Writer组件(没有重新添加),在Word中,选文件——打印——打印机选“Microsoft Office Document Image Writer”——属性——高级——输入格式选“TIFF-黑白传真”——设置默认输入的文件夹——确定——确定,打印完成后,将输出到刚设置的默认文件夹中。

关于javatif格式和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-02,除非注明,否则均为首码项目网原创文章,转载请注明出处。