改变image中图像的颜色(100分)

  • 主题发起人 主题发起人 wxysiwei
  • 开始时间 开始时间
W

wxysiwei

Unregistered / Unconfirmed
GUEST, unregistred user!
我在image(Timage)中加载了一个图片,如果我在运行期间想通过选择调色板中的颜色,
从而改变image中图片的颜色。请问有什么好的办法吗?
 
c.Pixels[X, Y]:=clred; // 某点[X.,Y]改为红色.
 
图像是一个不规则图形我不知道到底应该在哪一点上进行设置
 
在基于调色板的256色模式下,当一幅图像显示时,Windows把图像的逻辑调色板载入,并通过调色板映射把逻辑调色板映射到系统调色板,图像的每一像素的显示颜色都映射自系统调色板的一个颜色索引值,每个索引对应一个24位的RGB全彩色值。当系统调色板改变时,当前引用系统调色板的窗口的像素颜色也随之改变!
 
能具体点吗?最好有个事例,我到底如何才能实现它
 
怎么没有人回答我呀
提供点思路也可以呀
 
用象素点颜色的位操作,可以实现,如同PhotoShop中的朦板效果一样的实现方法...
 
〉〉〉〉〉〉〉〉怎么没有人回答我呀
〉〉〉〉〉〉〉〉提供点思路也可以呀〉〉〉〉〉〉〉
呵呵,我想不是没人肯回答,是这个问题有点难度,我试了一下把整幅图颜色改变后,画面效果惨不忍睹,我想应该先把图像模式转换成灰度模式也就是黑白的,再转换为RGB这样就可以把原来图片中的颜色值都干掉,然后再随意改变成某种颜色这样图片的效果就不会变了,这几天没空,有时间再试试,呵呵,祝好运!
 
我知道的是BMP图形 在256色以下是 图片颜色是通过 调色板索引来 确定颜色的 每个索引代表一个颜色( 0-255 在256色情况下) 在图片数据区域 的值是 都是颜色所对应的索引值 当 你把调色板中的索引值 的序号和颜色对应关系 改变 了 整个图片的颜色也就改了啊 这个是在256色下的情况 而 真彩就是数据区域的值就是颜色值
 
假如你是想调整个图像的颜色的话,前天我刚回答过类似的问题:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3552952

假如你只想改变图片中的一种颜色为其它颜色,那你就要先知道此颜色的值,下面代码从别人那里拷贝而来,你试试吧

procedure TransFormColor(Bmp: TBitmap; OldColor, NewColor: TColor);
var
i, j: Integer;
P: PByteArray;
Color: TColor;
R, G, B: Byte;
begin
R := GetRValue(NewColor);
G := GetGValue(NewColor);
B := GetBValue(NewColor);
Bmp.PixelFormat := pf24bit;
for j := 0 to Bmp.Height - 1 do
begin
P := Bmp.ScanLine[j];
for i := 0 to Bmp.Width - 1 do
begin
Color := RGB(P[i * 3 + 2], P[i * 3 + 1], P[i * 3]);
if Color = OldColor then
begin
P[i * 3 + 2] := R;
P[i * 3 + 1] := G;
P[i * 3] := B;
end;
end;
end;
end;


Sample:
//将 Image1 中的白色替换为黑色
TransFormColor(Image1.Picture.Bitmap, clWhite, clBlack);
Image1.Refresh;
 
问题是我不知道image里面的图片是什么颜色的呀
 
你可以取想改变的哪种的颜色,再ScanLine图片来改片颜色
 
我不知道我要的颜色在图片的哪一点上呀
 
你要遍历所有像素点,找到你要改变的颜色或者范围内的颜色,然后再进行更改

至于颜色更改可以参考tonmy的算法

我不太清楚你要做的是什么,是要替换图片中某颜色,还是把整个图片用一个颜色蒙版覆盖?

如果是蒙版覆盖可以参考我笔记里这个控件中的TransparentBitMap方法
http://www.delphibbs.com/keylife/iblog_show.asp?xid=17372
 
蒙板是个什么概念呀?
他是什么效果
 
........你装上我那个EXIMAGE 然后设置Shade:=true; 给LeaveImage一张图片 就能看到效果了
WrapColor是蒙版颜色

这个控件还是有点问题,我新修改的还没放上来......正在改,过2天
 
图片的颜色肯定是可以改变的!
那个播放器不是也可以该便图像的颜色吗?
你可以难到不能把图片用 别的工具(豪杰播放器,teaching 播放器等)该变了颜色然后在调用,用户一般只看结果不看过程,那不就OK吗?
人是或的你说是不是啊?
 
改变image中图片的颜色。????
我不认为 image中图片 是有颜色的(可以说五颜六色),我猜测你是想改变 image 的 图片 的 像素 的颜色,那你也的有个条件呀? 比如,所有的 像素 颜色偏红一点,或者将蓝色的 改为 红色等等, 你没有将问题表达清楚!

用 Scanline, tonmy 已经说的 比较清楚了。
P[i * 3 + 2] := ???
P[i * 3 + 1] := ???
P[i * 3] := ???

我公司有源码
 
我将图片放到了image中,之后我将他的背景色设为透明,
我在运行期想改变此时的图片的颜色,选择我喜欢的颜色。

现在我用“tonmy”所说的倒是能行,用一种颜色代替某种颜色(我的图片就一种颜色)。但是我现在怎么才能得到我想要替换的颜色的值呢
 

Similar threads

后退
顶部