有时候,我们需要不同透明度的图片,使用GDI+可以简单快速做到这一点,今天总结下,把代码贴出来,是基于VS2008开发的。

#include "stdafx.h"
#include <comdef.h>
#include <GdiPlus.h>
#include <iostream>
using namespace Gdiplus;
using namespace std;
#pragma comment(lib,"gdiplus.lib")
int GetEncoderClsid(const WCHAR* format,CLSID* pClsid)
{
UINT num = 0;
UINT size = 0;
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if(size == 0)
return -1;   // Failure
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1;   // Failure
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j;
}
}
free(pImageCodecInfo);
return -1;   // Failure
}
int _tmain(int argc, _TCHAR* argv[])
{
if (argc!=5)
{
cout<<"参数不够,需要五个参数"<<endl;
return -1;
}
ULONG_PTR gdiToken;
GdiplusStartupInput gdiStartInput;
GdiplusStartup(&gdiToken, &gdiStartInput, NULL);
int Alpha=_wtoi(argv[4]);;
Bitmap img(argv[1]);
int iWidth=img.GetWidth();
int iHeight=img.GetHeight();
Color color,colorTemp;
//依次获取原图像的每一个相素
for(int iRow=0;iRow<iHeight;iRow++){
for(int iColumn=0;iColumn<iWidth;iColumn++){
img.GetPixel(iColumn,iRow,&color);
//重新生成新的像素点
colorTemp.SetValue(color.MakeARGB(Alpha,color.GetR(),color.GetG(),color.GetB()));
//重新设定相素值
img.SetPixel(iColumn,iRow,colorTemp);
}
}
CLSID Clsid;
GetEncoderClsid(argv[3], &Clsid);
img.Save(argv[2], &Clsid);
// GdiplusShutdown(gdiToken);
printf("图像转换成功!\n");
return 0;
}

编译成功后,在dos模式下运行,参数从0到4依次为:程序名,原图像,目标图像,目标图像的格式(比如 image/png ,image/bmp),目标图像的透明度(值的范围为0-255);

比如,以我的为例,生成的SetAlpha.exe文件在E盘的Alpha文件夹下:

开始->运行-》输入cmd->跳转到E:\Alpha目录下:

在E盘的Alpha文件夹下会得到新的图片water2.png;由于上传的结果图在网页中显示效果不好,我就不上图了 。

gdi+设置图像的透明度相关推荐

  1. CSS设置图像的透明度

    IE9,Firefox,Chrome,Opera,和Safari浏览器使用透明度属性可以将图像变的不透明. Opacity属性值从0.0 - 1.0.值越小,使得元素更加透明. IE8和早期版本使用滤 ...

  2. Spire.Presentation使用教程:在Java中设置PowerPoint图像的透明度

    Spire.Presentation for Java专业的 PowerPoint API,它允许开发人员在 Java 应用程序中创建.读取.写入.转换和保存 PowerPoint 文档,而无需安装 ...

  3. 【Cocos creator】绘图系统:Graphics组件之动态改变生成图像的透明度

    在Cocos creator 中,要想在使用Graphics组件绘制图像的过程中改变图像的透明度有两种方法: 1.在编辑器中Graphics组件的fillColor属性中设置: 2.通过代码动态设置. ...

  4. WPF中GDI+图形图像的绘制:(一)绘制文本——动态设置字体、大小、颜色

    GDI+(Graphics Device Interface Plus图形设备接口加)是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息.GDI+不但在功能上比GDI 要强大很多 ...

  5. 【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )

    文章目录 一.获取图像真实宽高 二.计算解码区域 三.设置解码参数 内存复用 像素格式 四.图像绘制 五.执行效果 六.源码及资源下载 官方文档 API : BitmapRegionDecoder 在 ...

  6. QImage 如何设置图片的透明度

    最近遇到了一些这样的需求,在窗口可以调节显示图片的透明度,但是不能影响其他图片.一个窗口显示的图片并不是一张,而是多张通过绘制的形式叠加起来的.可以理解为类似图层. 就像下面这个组合一样,想法是在拖动 ...

  7. WPF中GDI+图形图像的绘制:(五)绘制图像——蒙板效果

    这里要实现的效果指的是对图片像素点区域进行颜色叠加,首先要做的是得到图片非透明部分的区域,效果如图: 实现步骤:1.在主窗体添加控制控件: <Label Grid.Row="4&quo ...

  8. VB6.0用GDI+保存图像为BMP\JPG\PNG\GIF格式完美终结版

    支持加载PNG图片等格式,原来的方法只能处理BMP类型的STDPICTURE对象 sub test1()SaveStdPicToFile Picture1.Picture, App.Path & ...

  9. R语言ggplot2可视化指定保存到pdf的图像的具体尺寸、保证缩放的一致性:使得绘图元素(文本、点大小等)在设计上都具有相同的绝对大小、设置全局数据点大小、主题格式、设置图像保存的具体尺寸

    R语言ggplot2可视化指定保存到pdf的图像的具体尺寸.保证缩放的一致性:使得绘图元素(文本.点大小等)在设计上都具有相同的绝对大小.设置全局数据点大小.主题格式.设置图像保存的具体尺寸 目录

最新文章

  1. 计算机维护系统Win8PE,u启动windows8PE工具箱
  2. mysql建立数据浏览器_一个简单的MySQL数据浏览器
  3. Java中的观察者模式
  4. python2与python3在absolute import的区别
  5. 数学好的男生适合学计算机吗,数学好的男生适合读什么专业 2021前景好吗
  6. 【Django】入门篇:项目创建(pycharm、linux)
  7. 联通培训 老师教的 bootstrap row 里面都是12行不断的分割成小格子
  8. 深度相机之TOF原理详解
  9. java替换特殊字符_Java StringBuffer替换特殊字符
  10. k8s springboot 文件_30分钟无痛上云——springboot项目部署到kubernetes
  11. [jQuery] 速记一の屏蔽鼠标右键监听鼠标Event
  12. 【软件工程】对于Why Software Development Methodologies Suck(为什么软件开发方法论让你觉得糟糕)问题的探讨
  13. 淘宝全屏雪花特效页面
  14. 【控制系统的数学模型——传递函数】
  15. 2063【例1.4】牛吃牧草-c++语言入门
  16. VO快速搜索 宝马VO 宝马VO翻译 VO码查询工具
  17. STC12C5A60S2 下载失败问题
  18. Google Earth Engine(GEE)——R 语言图像概览
  19. 2012春节快到了我们聚会吧!
  20. 外贸技巧之如何引导客户尽早下单

热门文章

  1. flowable工作流的使用
  2. win7怎么把计算机删除文件,win7电脑怎么批量删除文件_win7电脑批量删除文件的方法 - 系统家园...
  3. “保姆级”车载CAN总线教程(四)-堪称全网“最细”系列
  4. echo 框架中的 middleware 设计深度解析
  5. 小程序记录页面停留时间
  6. contextmenu样式 wpf_在XAML中设置WPF ContextMenu的PlacementTarget属性?
  7. 2020年招商银行FinTech数据赛道比赛总结
  8. VUE 缓存 设置缓存 使用缓存
  9. 内师大计算机学院有博士点吗,山西师范大学博士点哪些
  10. 一个5年C++程序员的年终总结,献给还在迷茫中的你