C#读写BitMap及颜色相乘

  private Bitmap ReadBitMapAndMultipy(Bitmap bitmap0)
{
int x1width = bitmap0.Width;
int y1height = bitmap0.Height;
Bitmap image = new Bitmap(x1width, y1height,
System.Drawing.Imaging.PixelFormat.Format32bppArgb);
int iPixelSize = ; BitmapData bitmapdata = image.LockBits(new
Rectangle(, , x1width, y1height),
ImageLockMode.ReadWrite, image.PixelFormat);
BitmapData bitmapdata0 = bitmap0.LockBits(new
Rectangle(, , x1width, y1height),
ImageLockMode.ReadOnly, image.PixelFormat);
try
{
unsafe
{
for (int y = ; y < y1height; y++)
{
byte* row = (byte*)bitmapdata.Scan0 +
(y * bitmapdata.Stride);
byte* row0 = (byte*)bitmapdata0.Scan0 +
(y * bitmapdata0.Stride);
for (int x = ; x < x1width; x++)
{
byte tempValB = row0[x * iPixelSize];
byte tempValG = row0[x * iPixelSize + ];
byte tempValR = row0[x * iPixelSize + ];
byte tempValA = row0[x * iPixelSize + ];
double r = Convert.ToDouble(tempValR) * / ;
double g = Convert.ToDouble(tempValG) * / ;
double b = Convert.ToDouble(tempValB) * / ; //double r = Convert.ToDouble(tempValR) * 78 / 255;
//double g = Convert.ToDouble(tempValG) * 69 / 255;
//double b = Convert.ToDouble(tempValB) * 48 / 255;
row[x * iPixelSize] = (byte)(b);
row[x * iPixelSize + ] = (byte)(g);
row[x * iPixelSize + ] = (byte)(r);
row[x * iPixelSize + ] = tempValA;
}
} }
}
catch
{
}
finally
{
image.UnlockBits(bitmapdata);
}
return image;
}

ReadBitMapAndMultipy

调用的代码:

 string path = System.IO.Path.GetDirectoryName(fileName);
Image bitmap = pictureBox1.Image;
Bitmap bitmap0 = bitmap as Bitmap;
Bitmap sabe = ReadBitMapAndMultipy(bitmap0);
Guid guid = new Guid();
string file = string.Format(@"{0}\{1}.png", path, guid.ToString());
sabe.Save(file);

C#读写BitMap及颜色相乘的更多相关文章

  1. Bitmap 图片格式并用 C++ 读写 Bitmap

    转自 Bitmap 图片格式并用 C++ 读写 Bitmap 1.Bitmap 图片格式 每部分的具体内容就不展开了.要说的有两点: (1)调色板不是必须的,可有可无,有没有调色板可以通过位图文件头的 ...

  2. 如何使用Palette提取Bitmap的颜色

    5.X提出了color palette 的概念,能够让主题动态的去适应当前的页面色调,让整个app色调看起来比较和谐统一 那么如何使用Palette呢,必不可少,我们需要在Android studio ...

  3. directX学习系列8 颜色融合(转)

    1, Multipass(多通道)    将一个任务划分成几个阶段,由多个pass处理不同阶段,后续pass总是处理前一个pass的结果.例如复杂的光照方程可以分成几个pass来计算.    用不同的 ...

  4. SharpDX之Direct2D教程I——简单示例和Color(颜色)

    研究Direct2D已经有一段时间了,也写了一个系列的文章 Direct2D ,是基于Windows API Code Pack 1.1.在前文 Direct2D教程VIII——几何(Geometry ...

  5. OpenGL — GLFW — 颜色

    OpenGL - GLFW - 颜色 参考教程:https://learnopengl-cn.readthedocs.io/zh/latest/02%20Lighting/01%20Colors/ 既 ...

  6. OpenGL光照1:颜色和基础光照

    本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 的内容为插入注释,可以先跳过 ...

  7. Shader 中的颜色计算

    下面介绍 Shader 中 gl_FragColor 的计算与转换: 一.颜色计算 1. 加 这里要讲讲三原色和三基色:三原色一般指的是红.绿.蓝三种,简称 RGB,这是加色系.就是光源只含有特定的波 ...

  8. 一个使用openGL渲染的炫丽Android动画库

    android-magic-surface-view 这是一个 android 动画特效库, 可以实现各种炫酷动画. github地址: https://github.com/gplibs/andro ...

  9. ImageLoader 笔记

    BitmapFactory 我们不能够通过构造函数创建Bitmap对象.如果需要将图片转成Bitmap对象加载到内存中,就需要使用BitmapFactory类.BitmapFactory跟据图片数据源 ...

随机推荐

  1. spring redis整合

    1,利用spring-data-redis整合 项目使用的pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  2. [ZZ] HDR the bungie way

    http://blog.csdn.net/toughbro/article/details/6755394 bufferencoding游戏float算法 bungie 06年,gamefest上的p ...

  3. Frenetic Python实验(三)

    实验5 repeater 这个实验在HelloSDNWorld里面做的实验是一样的.HelloSDNWorld 目的:模拟一个有多个端口的中继器. This application implement ...

  4. HTTP 笔记与总结(4 )socket 编程:批量发帖

    浏览器发送 POST 请求: 表单 form.html <!doctype html> <html lang="en"> <head> < ...

  5. spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

    1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...

  6. 关于在TP的各类标签中的注意事项

    name的位置上的变量是不用加$的 value位置上的变量是要加$的 <eq name="volist.id" value="$Think.post.id" ...

  7. Address localhost:1099 is already in use 的错误

    http://blog.csdn.net/huazhongkejidaxuezpp/article/details/41813683

  8. ManualResetEvent和AutoResetEvent的区别实例

    ManualResetEvent和AutoResetEvent的作用可以理解为在线程执行中插入停顿点flag终止程序运行,然后通过设置flag的状态来使得程序继续运行. 两者的区别是:ManualRe ...

  9. .Net程序员安卓学习之路1:登陆界面

    任何编程学习起步均是HelloWorld,作为稍有>net编程经验的我们来说就跳过这步吧,咱们且从简单登录界面开始.先看看效果: 一.准备知识: 1. 安卓环境:安装好JDK,直接去官网下载AD ...

  10. Cocos2d-JS cc.DrawNode用法

    app.js var HelloWorldLayer = cc.Layer.extend({ sprite:null, ctor:function () { ///////////////////// ...