广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 8224 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
rei 手机
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x366
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][精华] [求助]全彩转灰阶的程式码的问题
const int RED = 2;
const int GREEN = 1;
const int BLUE = 0;

void toGray(TImage *image)
{ Byte * ptr;
int r, g, b, gray, index;

image->Picture->Bitmap->PixelFormat = pf24bit; // for full-color image
for (int row=0; row<image->Picture->Height; ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



[ 此文章被rei在2006-04-22 20:36重新编辑 ]


人生要是跟等巴士一样...
  你愿意搭哪一种车?
爆满?脏车?旧车?新车?空车?还是...走路?
献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2006-04-22 20:30 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

ptr = (Byte*) image->Picture->Bitmap->ScanLine[row];
-> 取得那个 Row 的影像资料内容的位址
影像资料存放的格式由 image->Picture->Bitmap->PixelFormat = pf24bit 来决定
pf24bit 就是影像资料有R G B 三个 Bytes (共24bits)

index+"xxx"跟ScanLine
-> 就是指向这个 Row 中的第 Index 点的哪个颜色 R G B
一般要做影像处理都会直接对影像资料作运算后再存回去
ScanLine 就能提供影像资料内容的位址供程式加以运算处理

const int RED   = 2;
const int GREEN = 1;
const int BLUE = 0;
-> 这就是影像资料的颜色存放的顺序

Copy from Borland online help:
Provides indexed access to each line of pixels.
property ScanLine[Row: Integer]: Pointer;
Description
ScanLine is used only with DIBs (Device Independent Bitmaps) for image editing tools that do low-level pixel work.

此文章被评分,最近评分记录
财富:40 (by codeboy) | 理由: 感谢您的讲解喔..^^


献花 x1 回到顶端 [1 楼] From:台湾中华电信 | Posted:2006-04-22 23:13 |
rei 手机
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x366
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用cmovies于2006-04-22 23:13发表的 :
index+"xxx"跟ScanLine
-> 就是指向这个 Row 中的第 Index 点的哪个颜色 R G B
一般要做影像处理都会直接对影像资料作运算后再存回去
ScanLine 就能提供影像资料内容的位址供程式加以运算处理

不好意思~

想再请问一下~

如果不做存回去的动作~在下的程式码应该怎么改?
//////////////////////////////////////////////////////////////
        ptr[index + BLUE ] = (Byte)gray;
        ptr[index + GREEN ] = (Byte)gray;
        ptr[index + RED   ] = (Byte)gray;
        index += 3;

//////////////////////////////////////////////////////////////
ptr = (Byte*) image->Picture->Bitmap->ScanLine[row];
//////////////////////////////////////////////////////////////


[ 此文章被rei在2006-04-23 11:56重新编辑 ]


人生要是跟等巴士一样...
  你愿意搭哪一种车?
爆满?脏车?旧车?新车?空车?还是...走路?
献花 x0 回到顶端 [2 楼] From:台湾中华电信 | Posted:2006-04-23 10:10 |
cmovies
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x20
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

不存回去那不就没改了吗? 那干嘛拿出来运算?
还是你要写到另一个 Bitmap?

下面三行拿掉就没有存回去了
    ptr[index + BLUE ] = (Byte)gray;
    ptr[index + GREEN ] = (Byte)gray;
    ptr[index + RED   ] = (Byte)gray;


献花 x1 回到顶端 [3 楼] From:台湾中华电信 | Posted:2006-04-23 12:49 |
rei 手机
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x2 鲜花 x366
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用cmovies于2006-04-23 12:49发表的 :
不存回去那不就没改了吗? 那干嘛拿出来运算?
还是你要写到另一个 Bitmap?

下面三行拿掉就没有存回去了
    ptr[index + BLUE ] = (Byte)gray;
.......

呵~

谢谢您捏~我的问题已经搞定啰!

图跟东西都可以很正常的秀出来了~XD

因为昨天我也是把那三行砍掉...可是也出问题>"<...

可是下午在弄一次却正常了= ="...

XD


人生要是跟等巴士一样...
  你愿意搭哪一种车?
爆满?脏车?旧车?新车?空车?还是...走路?
献花 x0 回到顶端 [4 楼] From:台湾中华电信 | Posted:2006-04-23 17:50 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.052836 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言