我希望在C#中重新着色图像,以便保留真实图像(就像我们在任何照片编辑器中一样)。我试图这样做但没有用。在这方面有人可以帮助我......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.IO;
namespace Images
{
class Program
{
static void Main(string[] args)
{
try
{
Bitmap img = new Bitmap(@"D:\Image\Chrysanthemum.jpg");
Bitmap NewImage = new Bitmap(img,img.Width,img.Height);
for (int i = 0; i < img.Width; i++)
{
for (int j = 0; j < img.Height; j++)
{
{
NewImage.SetPixel(i, j,Color.FromArgb(0,0,240,0));
}
}
}
NewImage.MakeTransparent();
NewImage.Save(@"D:\Image\1",System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch(System.Exception exc)
{
Console.Write(exc);
}
}
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
您正在做的只是创建与原始图像大小相同的第二张图像。第二个图像填充了绿色(但没有alpha - 因此它只是透明的)。我怀疑你希望方法MakeTransparent()
重新着色原始图像,但事实并非如此。此方法只会使某种颜色的像素透明。这不是图像的不透明度。
所以这些是两个图像 - 一个在另一个旁边,它们彼此无关(除了相同的大小)。
因此,您可以直接操作img
变量中的图像(您可以将其复制以保留原始图像),方法是从Graphics
创建一个img
对象,您可以使用该对象进行绘制图像上的半透明颜色。
using (var gfx = Graphics.FromImage(img))
{
using (var brush = new SolidBrush(MYCOLOR)
gfx.FillRect(brush, MYRECT)
}
但我会坚持要求您使用图像处理库进行您想要实现的图像处理。所以请检查免费imageprocessor.org。他们的hue filter可能就是你想拥有的。