请教各位高人一下,小妹之前用ij.ImagePlus处理图像,现在要改用java.awt.Image软件包对图像进行处理,想请问一下,
img.setProcessor("",img.getProcessor().resize(newWidth,newHeight));
这个命令img为ImagePlus类,但如果img改用Image类,怎样能实现呢?在ij.ImagePlus的getProcessor().有一些方法直接可以使用,但在java.awt.Image没有,例如:
imagenCopy = new ImagePlus("",imagenWork.getProcessor().duplicate());//可以复制图像用于之后的处理
imgLabel.setIcon(new ImageIcon(imagenCopy.getProcessor().createImage()));//使用创建的新图像
用image怎么能实现呢?是否要调用其他的软件包?不胜感激!!!
上面的命令就是用在以下,要重新设定图像的尺寸,来使之适应JFrame的尺寸。 package Tranformation; import java.awt.Image; /*resize*/ public class resizeImage{ public void resize(Image img, int longMax)
{
if(img==null ¦ ¦ img.getWidth(null) <longMax ¦ ¦ img.getHeight(null) <longMax ¦ ¦ longMax <0)
return;
int width = img.getWidth(null);
int height = img.getHeight(null);
int newWidth;
int newHeight;
int k=1; do
{
newWidth = (int)(width/k);
newHeight = (int)(height/k);
k++;
}while(newWidth> longMax ¦ ¦ newHeight> longMax); //如何用java.awt实现以下保存设置图像的大小
//img.setProcessor("",img.getProcessor().resize(newWidth,newHeight));
}
}
img.setProcessor("",img.getProcessor().resize(newWidth,newHeight));
这个命令img为ImagePlus类,但如果img改用Image类,怎样能实现呢?在ij.ImagePlus的getProcessor().有一些方法直接可以使用,但在java.awt.Image没有,例如:
imagenCopy = new ImagePlus("",imagenWork.getProcessor().duplicate());//可以复制图像用于之后的处理
imgLabel.setIcon(new ImageIcon(imagenCopy.getProcessor().createImage()));//使用创建的新图像
用image怎么能实现呢?是否要调用其他的软件包?不胜感激!!!
上面的命令就是用在以下,要重新设定图像的尺寸,来使之适应JFrame的尺寸。 package Tranformation; import java.awt.Image; /*resize*/ public class resizeImage{ public void resize(Image img, int longMax)
{
if(img==null ¦ ¦ img.getWidth(null) <longMax ¦ ¦ img.getHeight(null) <longMax ¦ ¦ longMax <0)
return;
int width = img.getWidth(null);
int height = img.getHeight(null);
int newWidth;
int newHeight;
int k=1; do
{
newWidth = (int)(width/k);
newHeight = (int)(height/k);
k++;
}while(newWidth> longMax ¦ ¦ newHeight> longMax); //如何用java.awt实现以下保存设置图像的大小
//img.setProcessor("",img.getProcessor().resize(newWidth,newHeight));
}
}
public static final Image resizeImage(Image srcImage,int newWidth,int newHeight)
{
BufferedImage output = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g = output.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(srcImage, 0, 0, newWidth, newHeight,null);
return Toolkit.getDefaultToolkit().createImage(output.getSource());
}
比如用ImagePlus的Processor的duplicate很容易实现。
imagenCopy = new ImagePlus("",imagenWork.getProcessor().duplicate());//可以复制图像用于之后的处理 谢谢:)
不要看表象的东西,这里只不过封装了一下,名称叫得好听点..就像我说的没听过,不知道它的实现,你也可以研究一下它的实现方式.
ByteProcessor,ColorProcessor,FloatProcessor,ShortProcessor
它们的duplicate方法都只是拷贝原图片的二进制码来重新构建一个一样尺寸大小的对象.