易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi图像处理

    本文的线性亮度/对比度调整方法是在《改进的图像线性亮度调整方法》一文中线性亮度调整方法与《Delphi图像处理 -- Photoshop图像亮度/对比度调整》中的对比度调整方法基础上形成的,其原理和特点可参见这2篇文章:
    过程定义:
// 线性调整亮度,Value亮度值
procedure ImageLinearBrightness(Data: TImageData; Value: Integer);
// 调整亮度(线性)和对比度
procedure ImageLinearBrightnessAndContrast(Data: TImageData;
Bright, Contrast: Integer; Threshold: LongWord);
实现代码:
procedure ImageLinearbrightness(Data: TImageData; Value: Integer);
asm
push ebp
push esi
push edi
push ebx
test edx, edx // if (Value == 0) return
jz @end
mov ebp, edx
jl @@2
push eax
cmp ebp, 255 // if (Value > 0)
jle @@1 // {
mov ebp, 255 // if (Value > 255) Value = 255
@@1:
mov eax, 65536 // Value = 65536 / (256 - Value) - 256
mov ecx, 256
sub ecx, ebp
cdq
div ecx
sub eax, 256
mov ebp, eax // }
pop eax
@@2:
call SetDataReg32
cld
@yLoop:
push ecx
@xLoop:
push ecx
mov ecx, 3
@RGBLoop:
movzx eax, [edi] // rgb = rgb + rgb * value / 256
mov esi, eax
imul eax, ebp
sar eax, 8
add eax, esi
jns @@3
xor eax, eax
jmp @@4
@@3:
cmp eax, 255
jle @@4
mov eax, 255
@@4:
stosb
loop @RGBLoop
inc edi
pop ecx
loop @xLoop
pop ecx
add edi, ebx
dec edx
jnz @yLoop
@end:
pop ebx
pop edi
pop esi
pop ebp
end;
procedure ImageLinearBrightnessAndContrast(Data: TImageData;
Bright, Contrast: Integer; Threshold: LongWord);
begin
if (Bright <> 0) and (Contrast > 0) then
ImageLinearBrightness(Data, Bright);
ImageContrast(Data, Contrast, Threshold);
if (Bright <> 0) and (Contrast <= 0) then
ImageLinearBrightness(Data, Bright);
end;

&


相关文档:

总结一下delphi中SQL语句中引号

总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法以及SQL语句中日期格式的表示(#)、('')
在Delphi中进行字符变量连接相加时单引号用('''),又引号用('''')表示
首先定义变量
var
AnInt:integer=123;//为了方便在此都给它们赋初值。虽然可能在引赋初值在某些情况下不对
AnIntStr:string='456'; ......

delphi 全局变量的定义与初始化赋值

 delphi全局变量的定义与赋值主要有下面几种方法:
1.
全局变量的初始化
在最后结束的end.之前,增加initialization关键字,然后加入对全局变量的初始化,这样就可以初始化全局变量了.不论在interface还是在implementation部分的全部变量,都可以这么来初始化
//省略前面的interface, uses, type.
var
i: Integer; ......

Delphi图像处理

    图像旋转,是指按照给定的角度,计算出图像每个像素坐标点在新图像上的坐标位置,从而实现整个图像坐标变换的图像处理手段。其像素坐标的变换公式为:
    (1)、x' = x * cos(angle) + y * sin(andle)
            y' = ......

悟透delphi 第二章 DELPHI与WIN32时空

第一章  DELPHI的原子世界
第二章  DELPHI与WIN32时空
第三章  多线程
第四章  接口
第五章  包
第六章  事件与消息
第七章  组织你的模块
第八章  探索数据库
第九章  多层体系结构
第十章  操作界面与操作逻辑
第十一章  面向对象数据库基础
第二章&n ......

悟透delphi 第七章 组织你的模块

第一章  DELPHI的原子世界
第二章  DELPHI与WIN32时空
第三章  多线程
第四章  接口
第五章  包
第六章  事件与消息
第七章  组织你的模块
第八章  探索数据库
第九章  多层体系结构
第十章  操作界面与操作逻辑
第十一章  面向对象数据库基础
 空 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号