最近木有时间上网,偶然看到该题,没有现成的程序,给您个思路吧,图片在程序中本身是存的是一个二进制矩阵,如要拼接只需将两张图片转换成两个矩阵然后合并成一个大矩阵即可,从哪个像素开始都可以从矩阵中得到数据,切割图片亦是如此,计算一下便可。不知对您是否有帮助
创新互联公司基于分布式IDC数据中心构建的平台为众多户提供温江服务器租用 四川大带宽租用 成都机柜租用 成都服务器租用。
用java代码模拟一张图片可以这样操作:1.创建BufferedImage类
2.根据BufferedImage类得到一个Graphics2D对象
3.根据Graphics2D对象进行逻辑操作
4.处理绘图
5.将绘制好的图片写入到图片
Image bgImage;
Image fgImage;
try {
bgImage = ImageIO.read(bgImageFile);
fgImage = ImageIO.read(fgImageFile);
int bgWidth = bgImage.getWidth(null);
int bgHeight = bgImage.getHeight(null);
int fgWidth = fgImage.getWidth(null);
int fgHeight = fgImage.getHeight(null);
// 此类叫SpliceImages,这个方法是静态方法,所以实例化一下
// 后面的这个对象的属性是自定义的类成员。
SpliceImages spliceImages = new SpliceImages();
// 私有方法
spliceImages.parsePosition(position, bgWidth, bgHeight, fgWidth, fgHeight);
// 生成新图片的长、宽,后面那个是色彩模式
BufferedImage bufferedImage = new BufferedImage(spliceImages.WIDTH, spliceImages.HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics graphics = bufferedImage.createGraphics();
// 绘制背景图片
graphics.drawImage(bgImage, spliceImages.bgX, spliceImages.bgY, null);
// 绘制前景图片
graphics.drawImage(fgImage, spliceImages.fgX, spliceImages.fgY, null);
graphics.dispose();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(bufferedImage);
output.close();
} catch (IOException e) {
e.printStackTrace();
}
这个是我做图表时写的,整个类中定义了很多重载方法,所以不全贴了。由于用的FusionCharts3.1,单系列图表没有图例,为了处理导出图片,就自制图例,然后用java拼接。其中那个私有方法是我处理两张图片的左上角坐标的。这里就不贴了。实际上我的做法就是取出两个图片,然后重新绘制。做法比较笨,希望抛砖引玉吧。同理,图片覆盖也是用这个,只是两图片的坐标发生变发。
图像无缩放?
这个就是个算法的问题吧,你就直接根据多少行多少列,挨个给像素点赋值啊。不过要求原始图像大小相同吧。