导航:首页 > 编程语言 > javargb转换

javargb转换

发布时间:2024-07-16 07:02:48

1. 怎么实现用java 把tif格式的图片转换成jpg

用photoshop打开,另存为jpg格式就可以了。注意很多tif图片都是cmyk四色的(印刷格式),如果想把图片应用于网络上,要转换成rgb三色的。方法就是打开后,点击图像—〉模式—〉rgb颜色。

2. 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);
}
}
}

3. 关于通过java实现图片格式的转换

import java.io.*; import java.awt.*; import java.awt.image.*;

import java.awt.Graphics; import java.awt.color.ColorSpace;

import javax.imageio.ImageIO;

public class ImageCut {

/**

* 缩放图像

* @param srcImageFile源图像文件地址

* @param result缩放后的图像地址

* @param scale缩放比例

* @param flag缩放选择:true 放大; false 缩小;

*/

public static void scale(String srcImageFile, String result, int scale,

boolean flag) {

try {

BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件

int width = src.getWidth(); // 得到源图宽

int height = src.getHeight(); // 得到源图长

if (flag) {// 放大

width = width * scale;

height = height * scale;

} else {// 缩小

width = width / scale;

height = height / scale;

}

Image image = src.getScaledInstance(width, height,

Image.SCALE_DEFAULT);

BufferedImage tag = new BufferedImage(width, height,

BufferedImage.TYPE_INT_RGB);

Graphics g = tag.getGraphics();

g.drawImage(image, 0, 0, null); // 绘制缩小后的图

g.dispose();

ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 图像切割

* @param srcImageFile源图像地址

* @param descDir切片目标文件夹

* @param destWidth目标切片宽度

* @param destHeight目标切片高度

*/

public static void cut(String srcImageFile, String descDir, int destWidth,

int destHeight) {

try {

Image img;

ImageFilter cropFilter; // 读取源图像

BufferedImage bi = ImageIO.read(new File(srcImageFile));

int srcWidth = bi.getHeight(); // 源图宽度

int srcHeight = bi.getWidth(); // 源图高度

if (srcWidth > destWidth && srcHeight > destHeight) {

Image image = bi.getScaledInstance(srcWidth, srcHeight,

Image.SCALE_DEFAULT);

destWidth = 200; // 切片宽度

destHeight = 150; // 切片高度

int cols = 0; // 切片横向数量

int rows = 0; // 切片纵向数量

// 计算切片的横向和纵向数量

if (srcWidth % destWidth == 0) {

cols = srcWidth / destWidth;

} else {

cols = (int) Math.floor(srcWidth / destWidth) + 1;

}

if (srcHeight % destHeight == 0) {

rows = srcHeight / destHeight;

} else {

rows = (int) Math.floor(srcHeight / destHeight) + 1;

}

// 循环建立切片

// 改进的想法:是否可用多线程加快切割速度

for (int i = 0; i < rows; i++) {

for (int j = 0; j < cols; j++) {

// 四个参数分别为图像起点坐标和宽高

// 即: CropImageFilter(int x,int y,int width,int height)

cropFilter = new CropImageFilter(j * 200, i * 150,

destWidth, destHeight);

img = Toolkit.getDefaultToolkit().createImage(

new FilteredImageSource(image.getSource(),

cropFilter));

BufferedImage tag = new BufferedImage(destWidth,

destHeight, BufferedImage.TYPE_INT_RGB);

Graphics g = tag.getGraphics();

g.drawImage(img, 0, 0, null); // 绘制缩小后的图

g.dispose();

// 输出为文件

ImageIO.write(tag, "JPEG", new File(descDir

+ "pre_map_" + i + "_" + j + ".jpg"));

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

// 图像类型转换GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)

public static void convert(String source, String result) {

try {

File f = new File(source);

f.canRead();

f.canWrite();

BufferedImage src = ImageIO.read(f);

ImageIO.write(src, "JPG", new File(result));

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 彩色转为黑白

public static void gray(String source, String result) {

try {

BufferedImage src = ImageIO.read(new File(source));

ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);

ColorConvertOp op = new ColorConvertOp(cs, null);

src = op.filter(src, null);

ImageIO.write(src, "JPEG", new File(result));

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

//cut("e:/1.jpg", "e:/t/", 200, 150);

}

}

import java.io.*; import java.awt.*; import java.awt.image.*;

import java.awt.Graphics; import java.awt.color.ColorSpace;

import javax.imageio.ImageIO;

public class ImageCut {

/**

* 缩放图像

* @param srcImageFile源图像文件地址

* @param result缩放后的图像地址

* @param scale缩放比例

* @param flag缩放选择:true 放大; false 缩小;

*/

public static void scale(String srcImageFile, String result, int scale,

boolean flag) {

try {

BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件

int width = src.getWidth(); // 得到源图宽

int height = src.getHeight(); // 得到源图长

if (flag) {// 放大

width = width * scale;

height = height * scale;

} else {// 缩小

width = width / scale;

height = height / scale;

}

Image image = src.getScaledInstance(width, height,

Image.SCALE_DEFAULT);

BufferedImage tag = new BufferedImage(width, height,

BufferedImage.TYPE_INT_RGB);

Graphics g = tag.getGraphics();

g.drawImage(image, 0, 0, null); // 绘制缩小后的图

g.dispose();

ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 图像切割

* @param srcImageFile源图像地址

* @param descDir切片目标文件夹

* @param destWidth目标切片宽度

* @param destHeight目标切片高度

*/

public static void cut(String srcImageFile, String descDir, int destWidth,

int destHeight) {

try {

Image img;

ImageFilter cropFilter; // 读取源图像

BufferedImage bi = ImageIO.read(new File(srcImageFile));

int srcWidth = bi.getHeight(); // 源图宽度

int srcHeight = bi.getWidth(); // 源图高度

if (srcWidth > destWidth && srcHeight > destHeight) {

Image image = bi.getScaledInstance(srcWidth, srcHeight,

Image.SCALE_DEFAULT);

destWidth = 200; // 切片宽度

destHeight = 150; // 切片高度

int cols = 0; // 切片横向数量

int rows = 0; // 切片纵向数量

// 计算切片的横向和纵向数量

if (srcWidth % destWidth == 0) {

cols = srcWidth / destWidth;

} else {

cols = (int) Math.floor(srcWidth / destWidth) + 1;

}

if (srcHeight % destHeight == 0) {

rows = srcHeight / destHeight;

} else {

rows = (int) Math.floor(srcHeight / destHeight) + 1;

}

// 循环建立切片

// 改进的想法:是否可用多线程加快切割速度

for (int i = 0; i < rows; i++) {

for (int j = 0; j < cols; j++) {

// 四个参数分别为图像起点坐标和宽高

// 即: CropImageFilter(int x,int y,int width,int height)

cropFilter = new CropImageFilter(j * 200, i * 150,

destWidth, destHeight);

img = Toolkit.getDefaultToolkit().createImage(

new FilteredImageSource(image.getSource(),

cropFilter));

BufferedImage tag = new BufferedImage(destWidth,

destHeight, BufferedImage.TYPE_INT_RGB);

Graphics g = tag.getGraphics();

g.drawImage(img, 0, 0, null); // 绘制缩小后的图

g.dispose();

// 输出为文件

ImageIO.write(tag, "JPEG", new File(descDir

+ "pre_map_" + i + "_" + j + ".jpg"));

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

// 图像类型转换GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)

public static void convert(String source, String result) {

try {

File f = new File(source);

f.canRead();

f.canWrite();

BufferedImage src = ImageIO.read(f);

ImageIO.write(src, "JPG", new File(result));

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 彩色转为黑白

public static void gray(String source, String result) {

try {

BufferedImage src = ImageIO.read(new File(source));

ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);

ColorConvertOp op = new ColorConvertOp(cs, null);

src = op.filter(src, null);

ImageIO.write(src, "JPEG", new File(result));

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

//cut("e:/1.jpg", "e:/t/", 200, 150);

}

}

参考文献:http://www.cqtarena.com

4. java 8位灰度图的灰度值怎么获取

publicintfilterRGB(intx,inty,intrgb){
inta=rgb&0xff000000;//将最高位(24-31)的信息(alpha通道)存储到a变量
intr=(rgb>>16)&0xff;//取出次高位(16-23)红色分量的信息
intg=(rgb>>8)&0xff;//取出中位(8-15)绿色分量的信息
intb=rgb&0xff;//取出低位(0-7)蓝色分量的信息
rgb=(r*77+g*151+b*28)>>8;//NTSCluma,算出灰度值
returna|(rgb<<16)|(rgb<<8)|rgb;//将灰度值送入各个颜色分量
}

阅读全文

与javargb转换相关的资料

热点内容
python数字字符串转数字 浏览:657
c程序员可以转互联网吗 浏览:490
深圳交医保用什么app 浏览:461
pdf合并成一张 浏览:670
ie9文件夹怎么查看ftp 浏览:62
唯品会python解密 浏览:852
安卓高拍仪有什么用 浏览:241
同步盘用什么app好 浏览:188
服务器上下载是什么意思 浏览:169
s6怎么接电话加密 浏览:152
电脑的命令指令符打不开怎么办 浏览:535
可编程逻辑器件cpld开发板 浏览:888
加装文件夹图片 浏览:425
27岁程序员offer 浏览:619
中国建筑史梁思成pdf 浏览:198
单片机双核与单核区别 浏览:850
xss攻击需要编译的符号 浏览:140
南京单片机寻址 浏览:897
自制西门子编程电缆 浏览:807
服务器还叫什么名 浏览:712