十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
BufferedImage类有一个getSubimage()方法,以下来自API
创新互联是一家专业提供麻山企业网站建设,专注与网站设计制作、做网站、HTML5、小程序制作等业务。10年已为麻山众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
public BufferedImage getSubimage(int x,
int y,
int w,
int h)
返回由指定矩形区域定义的子图像。返回的 BufferedImage 与源图像共享相同的数据数组。
参数:
x - 指定矩形区域左上角的 X 坐标
y - 指定矩形区域左上角的 Y 坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
返回:
BufferedImage,它是此 BufferedImage 的子图像。
抛出:
RasterFormatException - 如果指定区域不包含在此 BufferedImage 中
public BufferedImage getSubimage(int x,
int y,
int w,
int h)返回由指定矩形区域定义的子图像。返回的 BufferedImage 与源图像共享相同的数据数组。
参数:
x - 指定矩形区域左上角的 X 坐标
y - 指定矩形区域左上角的 Y 坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
你先把分块的坐标弄好,在拿这个方法去拿没块的图就是了。
怎么会无法呢。java支持图片格式中最好的就是png,别的图片可以不支持,png是默认支持的。用ARGB色彩模型直接对png操作即可,
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Test {
static public void main(String 参数[]){
try{
BufferedImage img=ImageIO.read(new File("test.png"));
int half_w=img.getWidth()/2;
int rgb[]=new int[half_w*img.getHeight()];
img.getRGB(0, 0, half_w, img.getHeight(), rgb, 0, half_w);
BufferedImage img_half=new BufferedImage(half_w, img.getHeight(), BufferedImage.TYPE_INT_ARGB);
img_half.setRGB(0, 0,half_w,img.getHeight(), rgb,0,half_w);
//保存到新文件half.png里面
ImageIO.write(img_half,"PNG",new File("half.png"));
}catch (IOException e){
e.printStackTrace();
}
}
}
======
得到half.png签名图的左半边,保留了透明的背景。
这已经只有5-6行,抛砖引玉,用raster可能代码更简..