C++ Builder 使用WaterMarkDll动态连接库给图片加水印以防篡改

1,在调用窗体里,Unit1.cpp里引入
#include "WaterMark.h"


2,在窗体加载事件里加载动态库:


__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//初始化水印
if(!LoadWaterMark())
{
ShowMessage("加载水印失败!");
}
}


3,触发添加水印

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//添加水印
AnsiString imgPath="D:\\img\\tempImg.jpg";
int suc=WaterMarkEmbed(s.c_str(),"water.bmp");
//返回:1成功
//0失败
//-1文件类型不对,或者已经加密过
//-2水印文件不符合,太大
//-3文件有问题,或者文件名不对,文件要带扩展名
}


拷贝WaterMark.cpp和WaterMark.h文件到工程目录中

打开工程文件,点击菜单栏中工程->添加到工程,选中刚拷贝过来的那两个文件

WaterMark.cpp

#include <vcl.h>
#pragma hdrstop

#include "WaterMark.h"
#include <stdio.h>

int (WINAPI *lpfnWaterMarkEmbed)(char * FilePath,char * WaterMarkFilePath);

int (WINAPI *lpfnPicIsTamper)(char* FilePath);

bool LoadWaterMark()
{
RMDLL=LoadLibrary("WaterMarkDll.dll");
if (!RMDLL)
return false;

(FARPROC )lpfnWaterMarkEmbed=GetProcAddress(RMDLL,"_WaterMarkEmbed@8"); //加载图片
(FARPROC )lpfnPicIsTamper=GetProcAddress(RMDLL,"_PicIsTamper@4"); // 图片识别用
return true;
}
//添加水印
int WaterMarkEmbed(char * FilePath,char * WaterMarkFilePath)
{
return lpfnWaterMarkEmbed(FilePath,WaterMarkFilePath);
}
//验证
int PicIsTamper(char* FilePath)
{
return lpfnPicIsTamper(FilePath);
}
#pragma package(smart_init)


WaterMark.h

#ifndef WaterMarkH
#define WaterMarkH

HANDLE RMDLL;

bool LoadWaterMark(); //加载水印模块动态连接库

int WaterMarkEmbed(char * FilePath,char * WaterMarkFilePath);

int PicIsTamper(char* FilePath);

#endif


[color=red]不提供下载[/color],下载链接为我自己备份使用,内带防篡改图片验证程序,WaterMarkDll.dll和一张水印图,压缩包有密码,请勿下载

黑色头发:http://heisetoufa.iteye.com/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值