【图片与图片的合成 代码】
/ * 首先 , 创建图片合成后存放的路径,判断如果没有文件夹,新建。* /
String finalCompositePicPath = SavePath + File.separator + card_id + ".jpg"; //比如:c:/temp/312.jpg
File cardFile = new File(finalCompositePicPath);
try
{
if (null != cardFile && !cardFile.isDirectory()) // 目录不存在,则创建它
{
cardFile.createNewFile();
}
else if (cardFile.exists()) // 存在则先删除
{
cardFile.delete();
cardFile.createNewFile(); // 重新创建
}
}
catch (IOException ex)
{
SysLog.getModuleLogger().info("合成部分--->创建文件出错");
SysLog.getModuleLogger().error(ex,ex);
}
/ * 接下来是调用图片合成的代码 * /
compositeOnePicByTwo(backgroundPicPath,headPicPath,finalCompositePicPath,position) //需要调用的函数
参数解释: backgroundPicPath (完整路径)背景图片如 c:/temp/背景.jpg
headPicPath (完整路径)小图片如 c:/temp/小图.jpg
finalCompositePicPath (完整路径)合成目标图片如 c:/temp/312.jpg
position 小图在背景图的位置 此处1为左边,2为右边 可任意自己调整
/ * 合成图片的方法 * /
public boolean compositeOnePicByTwo(String backgroundPicPath,String headPicPath,String finalCompositePicPath,String positionType)
{
SysLog.getModuleLogger().info("存入card的backgroundPicPath完整路径: " + backgroundPicPath );
SysLog.getModuleLogger().info("存入card的headPicPath完整路径: " + headPicPath );
SysLog.getModuleLogger().info("compositeOnePicByTwo(图片与图片的合成)----->Start");
int x = 0;
int y = 0;
BufferedImage bi1 = null;
BufferedImage bi2 = null;
try
{
bi1 = javax.imageio.ImageIO.read(new File(backgroundPicPath));
bi2 = javax.imageio.ImageIO.read(new File(headPicPath));
}
catch (IOException e)
{
SysLog.getModuleLogger().info("compositeOnePicByTwo(图片与图片的合成)----->ERROR(创建内存图片出错)");
e.printStackTrace();
return false ;
}
Graphics g = bi1.getGraphics();
if(positionType.equals("1")) // (1)小图片在大图片的左
{
g.drawImage(bi2, x+30, bi1.getHeight()/2-bi2.getHeight()/2, null);
}
else if(positionType.equals("2")) // (2) 小图片在大图片的右
{
g.drawImage(bi2,bi1.getWidth() - bi2.getWidth()-30 ,bi1.getHeight()/2-bi2.getHeight()/2,null);
}
FileOutputStream out = null; //输出到文件流
SysLog.getModuleLogger().info("存入card的完整路径: " + finalCompositePicPath );
try
{
out = new FileOutputStream(finalCompositePicPath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi1);
param.setQuality(1f,false);
encoder.setJPEGEncodeParam(param);
encoder.encode(bi1);
out.close();
}
catch (IOException e)
{
SysLog.getModuleLogger().info("compositeOnePicByTwo(图片与图片的合成)----->ERROR(输出出错)");
e.printStackTrace();
return false ;
}
// p1背景图,p2印章,p为输出图。p2要是gif或png等支持透明图象的。
//
// x,y 为在背景图放置印章的坐标( 左上角开始算)。
//
//
// 在Java2D中设置画图的透明度:
float alpha = 0.5f; // 透明度
Graphics2D g2d = bi2.createGraphics();
// 设置透明
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha)); // 开始
// g2d.drawImage(); // 画图
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); // 结束
return true ;
}
分享到:
相关推荐
4. **图片合成过程**: - 首先,加载背景图片(如`new_images.jpg`或`temp.png`)。 - 然后,使用`imagecopy()`或`imagecopyresampled()`函数将用户头像(`1.png`)复制并调整大小到合适的位置。 - 接下来,利用`...
3. **图片合成算法**:图片合成可以采用简单的叠加或者更复杂的算法,如 alpha 混合。在 DELPHI 中,我们可以直接使用 `Canvas` 属性来绘制图像,例如将 `Bitmap2` 合成到 `Bitmap1` 的右下角: ```delphi Bitmap1...
通过图片合成,用户可以将不同的图像元素结合在一起,创造出独特的视觉效果,比如合成风景、人物、文字等,甚至可以实现虚拟与现实的融合。 在提供的压缩包子文件“picmix_3721_setup.exe”中,我们可以推测这可能...
在Java编程语言中,将多张图片合成一张图片是一项常见的图像处理任务,广泛应用于各种应用场景,如社交媒体拼图、报告生成、数据可视化等。要实现这个功能,我们需要使用到Java的图像处理库,如Java AWT(Abstract ...
本篇文章将深入探讨如何使用Java实现“多张图片合成”、“图片拼接”以及“图片上写字”的功能。我们将主要围绕提供的`ImgUtil.java`文件进行讲解。 1. **图片合成**: 图片合成是指将多张图片组合成一张新的图片...
.NET 图片合成,图片加文字,图片加二维码,可直接设置背景图绝对路径、要合成的图片地址、宽度、高度、margin-left、margin-top位置进行图片合成。 设置文字位置、文字大小进行图片文字合成,已在多个项目中使用。
在Android开发中,图片合成与相框合成是常见的图像处理技术,主要应用于各种社交媒体应用、照片编辑应用等。本文将详细讲解如何在Android环境中实现不规则图片合成与不规则相框合成。 首先,我们需要理解图片合成的...
在这个"易语言图片合成"的项目中,我们主要关注的是如何使用易语言来实现图片的合并与处理。 图片合成是图像处理中的一个重要环节,它涉及到多个图像的叠加、融合,以达到新的视觉效果。在易语言中,我们可以使用...
在JavaScript的世界里,将多张图片合成一张图片是一种常见的需求,比如在制作拼图、预览上传图片或者优化页面性能时。本项目“JS多张图片合成一张图片代码”提供了一个解决方案,它利用HTML5的Canvas API实现了这个...
完成图片合成后,你可以将结果保存到文件,或者在界面上显示出来。例如,可以这样保存结果: ```cpp QImage combined = combineImages("path_to_image1", "path_to_image2"); if (!combined.save("path_to_save_...
在本文中,我们将探讨如何使用PHP实现多张图片合成一张图片的功能。这一过程涉及到PHP的图像处理能力,特别是图像操作函数imagecopy()。我们将按照以下步骤进行: 首先,我们需要搭建开发环境。在本案例中,开发者...
本文将详细讲解如何利用C# WinForm实现图片合成的示例,帮助开发者了解并掌握这一技术。 首先,我们需要了解图片合成的基本概念。图片合成是指将两张或更多的图像结合在一起,形成新的视觉效果。在C# WinForm中,...
在MATLAB中,将图片合成视频是一项常见的任务,尤其在数据可视化或动画制作中非常有用。这个主题涉及MATLAB的图像处理和视频编码功能。以下是对这个知识点的详细讲解: 首先,我们需要理解基本概念。图片是由像素...
在Qt库中,图片合成是一项重要的图像处理功能,它允许开发者将多张图片按照特定的模式融合在一起,创建出新的视觉效果。这个过程通常涉及到Qt的`QPainter`类及其枚举类型`QPainter::CompositionMode`。在这个场景中...
在"易语言源码易语言PNG图片合成源码例程.rar"这个压缩包中,我们可以推测包含的是一个易语言编写的程序示例,该示例展示了如何将多张PNG图片进行合成。在计算机图形处理中,图片合成通常涉及到图像的叠加、混合模式...
nodejs利用gm插件合成图片源码片段
本文将深入探讨如何利用Canvas进行图片和文字的拼接合成,生成自定义的图像,尤其适用于制作邀请函、海报等个性化内容。我们将主要围绕以下几个关键知识点展开: 1. **Canvas元素的创建与引用** 在HTML中,通过`...
在IT领域,图片合成视频是一种常见的任务,尤其在多媒体处理、动画制作以及数据可视化中有着广泛的应用。OpenCV(Open Source Computer Vision Library)是一个强大的计算机视觉库,它提供了丰富的功能,包括图像...
标题 "c# 图片合成AVI 源码" 描述了一个使用C#编程语言将多张图片(例如JPG格式)合成为AVI视频文件的过程。在IT领域,这涉及到图像处理和视频编码的知识。AVI(Audio Video Interleave)是一种常见的视频容器格式,...