`
dqifa
  • 浏览: 116335 次
社区版块
存档分类
最新评论

给图片添加图片水印

阅读更多
写在开始
不能用代码同时实现半透明和不规则形状的水印,只能选其一,有哪位高手指点一下不胜感激

 

此例中的半透明是在Fireworks中处理图片实现,不是用代码实现的

 

#include <wx/dcmemory.h>
#include <wx/dcclient.h>
#include <wx/dc.h>

enum Alignment
{
    aLeftTop=0,
    aLeftBottom=1,
    aRightTop=2,
    aRightBottom=3,
    aCenter=4
};

void MarkImage(wxDC &dc,//设备上下文
               wxString srcimg,//目标图片
               wxString waterimg,//水印图片
               wxString desimg,//已添加水印图片
               int Percent=0,//透明度百分比
               Alignment align=aLeftTop,//水印位置
               int dx=0,int dy=0//边界距离
              )
{
    wxImage img1,img2;
    img1.LoadFile(srcimg,wxBITMAP_TYPE_ANY);
    img2.LoadFile(waterimg,wxBITMAP_TYPE_ANY);

//    if(!img2.HasAlpha())
//    {
//        img2.InitAlpha();
//    }
//        unsigned char *alpha_plane = img2.GetAlpha();
//        int alpha = (Percent*255)/100;
//        memset(alpha_plane, alpha, img2.GetWidth() * img2.GetHeight());

//    img2.SetMask();
//    img2.SetMaskColour(0,0,255);

    wxBitmap bmp1(img1);
    wxBitmap bmp2(img2);

    int w1=bmp1.GetWidth();
    int h1=bmp1.GetHeight();
    int w2=bmp2.GetWidth();
    int h2=bmp2.GetHeight();

    int x=dx,y=dy;
    switch(align)
    {
    case aLeftBottom:
        y=h1-h2-dy;
        break;
    case aRightTop:
        x=w1-w2-dx;
        break;
    case aRightBottom:
        x=w1-w2-dx;
        y=h1-h2-dy;
        break;
    case aCenter:
        x=(w1-w2)/2;
        y=(h1-h2)/2;
    default:
        break;
    }

    wxMemoryDC memDC1,memDC2;
    memDC1.SelectObject(bmp1);
//    memDC.DrawBitmap(bmp2, x,y, true);
    memDC2.SelectObject(bmp2);
    memDC1.Blit(x,y,bmp2.GetWidth(),bmp2.GetHeight(),&memDC2,0,0,wxCOPY,true);
    bmp1.SaveFile(desimg,wxBITMAP_TYPE_JPEG);
    memDC1.Clear();
    memDC1.SelectObject(wxNullBitmap);
    memDC2.Clear();
    memDC2.SelectObject(wxNullBitmap);
}

void WaterMarkDemoDialog::OnAbout(wxCommandEvent& event)
{
    wxMemoryDC dc;
    MarkImage(dc,_T("1.jpg"),_T("shape.png"),_T("3.jpg"),50,aCenter,100,200);
}

 

  • 大小: 183.9 KB
分享到:
评论

相关推荐

    C# 给图片加上文字或图片水印

    C# 给图片加上文字或图片水印,通过使用GDI+ 给图片上加水印。实现了透明文字与透明图片水印。可设置水印位置。

    【ASP.NET编程知识】asp .net实现给图片添加图片水印方法示例.docx

    在本示例中,我们将探讨如何在ASP.NET中给图片添加图片水印。 首先,创建一个名为`ImageWriter`的类库,该类库包含一个名为`ImageManager`的类,这个类将负责处理图片水印的添加。在这个类中,定义了一个枚举类型`...

    java给图片添加水印

    在Java编程语言中,给图片添加水印是一项常见的任务,特别是在网站开发中,为了保护版权或者标识来源,经常需要在用户上传的图片上添加特定的文字或图像水印。以下将详细讲解如何使用Java来实现这一功能。 首先,...

    图片水印处理程序,图片水印处理程序,图片水印处理程序

    我自己做的图片水印处理程序希望大家喜欢哦

    C# 图片添加水印(图片或者文字)

    在C#编程中,添加水印到图片...总之,C#结合WPF为图片添加水印提供了一种强大而灵活的方法,无论是图片还是文字水印,都可以轻松实现。通过创建DEMO并运行代码,你可以进一步熟悉这个过程,并将其应用到自己的项目中。

    文字和图片水印添加 Winfrom 源码

    本项目“文字和图片水印添加 Winform 源码”提供了一种在Windows应用程序(Winform)中实现这一功能的方法。以下是关于这个项目及其相关知识点的详细说明: 1. **Winform应用**:Winform是.NET Framework的一部分,...

    基于Java给图片添加文字或图片水印

    在Java编程环境中,给图片添加文字或图片水印是一项常见的图像处理任务,广泛应用于版权保护、品牌宣传等领域。本项目“基于Java给图片添加文字或图片水印”旨在教授如何利用Java实现这一功能,适用于大学生的课程...

    图片上添加文字、图片水印源码(C#)

    在IT领域,尤其是在软件开发中,常常需要对图像进行各种处理,例如添加文字或图片水印,以增强版权保护或视觉效果。本篇将详细解析一个基于C#语言的WinForms应用程序,该程序实现了在图片上添加文字和图片水印的功能...

    C# 图片水印添加和去掉

    在C#编程中,添加和移除图片水印是一项常见的图像处理任务,主要涉及到图形绘制和位图操作。本文将详细讲解如何利用`System.Drawing.Graphics`类和`LockBits`方法来实现这一功能。 首先,`System.Drawing.Graphics`...

    winfrom给图片批量添加文字或图片水印

    在本文中,我们将深入探讨如何使用WinForms来实现一个功能,即批量为图片添加文字或图片水印。这是一项实用的技术,特别是在版权保护、品牌宣传或者数据可视化等方面,我们常常需要在图片上添加独特的标识以表明...

    给word加入水印图片盖章

    同样是在“设计”菜单下,选择“水印”后,点击“图片水印”。在弹出的对话框中,浏览并选择你要用作水印的图片,可以是透明的PNG格式,这样可以更好地与文档背景融合。你可以调整图片的缩放比例和旋转角度,以达到...

    简单文字图片水印效果

    以上代码展示了如何添加文字和图片水印的基本步骤。实际项目中,这些方法可能需要进一步优化,例如添加更多参数以适应不同需求,或者封装成一个可复用的类。 通过理解并运用上述知识点,你可以在C# Winform应用中...

    给图片添加水印

    在IT行业中,为图片添加水印是一项常见的任务,特别是在网页设计、社交媒体管理和版权保护等领域。在本项目中,我们将探讨如何使用JavaScript实现这一功能。这个项目适用于VS2010开发环境,它允许用户在上传图片之前...

    C#添加文字水印,图片水印,程序实例源代码

    在提供的程序实例中,已经封装了一个类,包含了添加文字和图片水印的功能。这个类可能会包含如下的方法: ```csharp public class Watermark { public void AddTextWatermark(Image image, string text, Font font...

    Flutter 界面背景添加水印

    网上很多文章要么都是在图片添加水印,要么给的例子都是全屏的水印,无法满足我先有的需求。 怎么办呢,自己怼一个好了。 思路:在页面里添加一个widget作为底层背景,在这个背景绘制水印。 绘制:通过CustomPaint、...

    java图片加水印(适应铺满)

    开发一个项目,需要用到图片加水印的功能,这里考虑使用后台加水印,在上传的时候或者回显到页面时候,取图片文件的流数据,进行加水印在返回流数据就行了,非常简单,不懂可以问我

    给图片添加文字或图片水印C#代码

    C#代码给图片添加文字或图片水印

    自动添加图片水印

    自动添加图片水印

Global site tag (gtag.js) - Google Analytics