`
张小宇
  • 浏览: 35275 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

图片与图片的合成

阅读更多
【图片与图片的合成 代码】

/ * 首先 , 创建图片合成后存放的路径,判断如果没有文件夹,新建。* /

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 ; 
}
分享到:
评论

相关推荐

    php文字与图片合成新图片

    4. **图片合成过程**: - 首先,加载背景图片(如`new_images.jpg`或`temp.png`)。 - 然后,使用`imagecopy()`或`imagecopyresampled()`函数将用户头像(`1.png`)复制并调整大小到合适的位置。 - 接下来,利用`...

    DELPHI多图片合成一图片

    3. **图片合成算法**:图片合成可以采用简单的叠加或者更复杂的算法,如 alpha 混合。在 DELPHI 中,我们可以直接使用 `Canvas` 属性来绘制图像,例如将 `Bitmap2` 合成到 `Bitmap1` 的右下角: ```delphi Bitmap1...

    图片合成器合成图片非常简单

    通过图片合成,用户可以将不同的图像元素结合在一起,创造出独特的视觉效果,比如合成风景、人物、文字等,甚至可以实现虚拟与现实的融合。 在提供的压缩包子文件“picmix_3721_setup.exe”中,我们可以推测这可能...

    利用Java程序把多张图片合成一张图片

    在Java编程语言中,将多张图片合成一张图片是一项常见的图像处理任务,广泛应用于各种应用场景,如社交媒体拼图、报告生成、数据可视化等。要实现这个功能,我们需要使用到Java的图像处理库,如Java AWT(Abstract ...

    java多张图片合成,图片拼接,图片上写字

    本篇文章将深入探讨如何使用Java实现“多张图片合成”、“图片拼接”以及“图片上写字”的功能。我们将主要围绕提供的`ImgUtil.java`文件进行讲解。 1. **图片合成**: 图片合成是指将多张图片组合成一张新的图片...

    .NET 图片合成,图片加文字,图片加二维码

    .NET 图片合成,图片加文字,图片加二维码,可直接设置背景图绝对路径、要合成的图片地址、宽度、高度、margin-left、margin-top位置进行图片合成。 设置文字位置、文字大小进行图片文字合成,已在多个项目中使用。

    Android图片合成相框合成

    在Android开发中,图片合成与相框合成是常见的图像处理技术,主要应用于各种社交媒体应用、照片编辑应用等。本文将详细讲解如何在Android环境中实现不规则图片合成与不规则相框合成。 首先,我们需要理解图片合成的...

    易语言图片合成

    在这个"易语言图片合成"的项目中,我们主要关注的是如何使用易语言来实现图片的合并与处理。 图片合成是图像处理中的一个重要环节,它涉及到多个图像的叠加、融合,以达到新的视觉效果。在易语言中,我们可以使用...

    JS多张图片合成一张图片代码.zip

    在JavaScript的世界里,将多张图片合成一张图片是一种常见的需求,比如在制作拼图、预览上传图片或者优化页面性能时。本项目“JS多张图片合成一张图片代码”提供了一个解决方案,它利用HTML5的Canvas API实现了这个...

    如何利用qt合成图片

    完成图片合成后,你可以将结果保存到文件,或者在界面上显示出来。例如,可以这样保存结果: ```cpp QImage combined = combineImages("path_to_image1", "path_to_image2"); if (!combined.save("path_to_save_...

    使用PHP实现多张图片合成一张1

    在本文中,我们将探讨如何使用PHP实现多张图片合成一张图片的功能。这一过程涉及到PHP的图像处理能力,特别是图像操作函数imagecopy()。我们将按照以下步骤进行: 首先,我们需要搭建开发环境。在本案例中,开发者...

    C# winform图片合成

    本文将详细讲解如何利用C# WinForm实现图片合成的示例,帮助开发者了解并掌握这一技术。 首先,我们需要了解图片合成的基本概念。图片合成是指将两张或更多的图像结合在一起,形成新的视觉效果。在C# WinForm中,...

    matlab图片合成视频

    在MATLAB中,将图片合成视频是一项常见的任务,尤其在数据可视化或动画制作中非常有用。这个主题涉及MATLAB的图像处理和视频编码功能。以下是对这个知识点的详细讲解: 首先,我们需要理解基本概念。图片是由像素...

    qt里的图片合成

    在Qt库中,图片合成是一项重要的图像处理功能,它允许开发者将多张图片按照特定的模式融合在一起,创建出新的视觉效果。这个过程通常涉及到Qt的`QPainter`类及其枚举类型`QPainter::CompositionMode`。在这个场景中...

    易语言源码易语言PNG图片合成源码例程.rar

    在"易语言源码易语言PNG图片合成源码例程.rar"这个压缩包中,我们可以推测包含的是一个易语言编写的程序示例,该示例展示了如何将多张PNG图片进行合成。在计算机图形处理中,图片合成通常涉及到图像的叠加、混合模式...

    nodejs图片合成源代码,gm插件

    nodejs利用gm插件合成图片源码片段

    Canvas画布图片文字拼接合成,生成图片

    本文将深入探讨如何利用Canvas进行图片和文字的拼接合成,生成自定义的图像,尤其适用于制作邀请函、海报等个性化内容。我们将主要围绕以下几个关键知识点展开: 1. **Canvas元素的创建与引用** 在HTML中,通过`...

    图片合成视频OpenCV

    在IT领域,图片合成视频是一种常见的任务,尤其在多媒体处理、动画制作以及数据可视化中有着广泛的应用。OpenCV(Open Source Computer Vision Library)是一个强大的计算机视觉库,它提供了丰富的功能,包括图像...

    c# 图片合成AVI 源码

    标题 "c# 图片合成AVI 源码" 描述了一个使用C#编程语言将多张图片(例如JPG格式)合成为AVI视频文件的过程。在IT领域,这涉及到图像处理和视频编码的知识。AVI(Audio Video Interleave)是一种常见的视频容器格式,...

Global site tag (gtag.js) - Google Analytics