各位大哥100分求你们了!把题目看清楚可以不?
求两个函数 ——放大缩小 图片本身大小!!!
1)看清楚了 不是要变 IMAGE 大小 ,
2)要变的是 IMAGE 中的图片大小,
3)也就是 图片 宽高上的 象素点 按比例 自动
放大缩小可以不?
(就象photoshop中那样 处理 图片的
方式,可别说 大哥们 这都忘记了吧!)
function 放大(scr:TBitMap):TBitMap;
function 缩小(scr:TBitMap):TBitMap;
求两个函数 ——放大缩小 图片本身大小!!!
1)看清楚了 不是要变 IMAGE 大小 ,
2)要变的是 IMAGE 中的图片大小,
3)也就是 图片 宽高上的 象素点 按比例 自动
放大缩小可以不?
(就象photoshop中那样 处理 图片的
方式,可别说 大哥们 这都忘记了吧!)
function 放大(scr:TBitMap):TBitMap;
function 缩小(scr:TBitMap):TBitMap;
解决方案 »
- 我的\Program Files\Common Files\Borland Shared\Database Desktop\DBD32.EXE文件损坏
- treeview 禁止修改文字 高手进
- IDHTTP发送数据的问题
- Delphi如何存取Oracle数据库中的图片数据呢?
- 请问怎么用程序实现对文件夹加密?有什么好的方法
- 谁知道在DELPHI中怎么用汇编
- 关于MSSQL数据删除问题?
- 一个简单问题,如何取得几个月前的日期, 比如当前是 2002-3-26 ,4个月前是2001-12-26
- 帮帮忙?谁能给我一篇详细讲解打包BDE时怎样在注册表中注册的文章?谢谢
- 老千,checklistbox的item属性里的纪录怎么得到呢?
- 小弟想做一个C/S架构的<人事管理系统>,但不知道怎样设计?`
- 关于QRgroup的打印顺序问题
具体的方法是:
先建立一个备份Bitmap,然后将Image的图像数据复制到备份Bitmap上。
接下来改变源图像大小(注意要改TImage.Picture的大小,而不是Image的大小)。
最后把备份的图像StretchDraw到源图像上。
Var
x, y, xP, yP,
yP2, xP2: Integer;
Read, Read2: PByteArray;
t, t3, t13, z, z2, iz2: Integer;
pc: PBytearray;
w1, w2, w3, w4: Integer;
Col1r, col1g, col1b, Col2r, col2g, col2b: byte;
Begin
xP2 := ((src.Width - 1) Shl 15) Div Dst.Width;
yP2 := ((src.Height - 1) Shl 15) Div Dst.Height;
yP := 0;
For y := 0 To Dst.Height - 1 Do
Begin
xP := 0;
Read := src.ScanLine[yP Shr 15];
If yP Shr 16 < src.Height - 1 Then
Read2 := src.ScanLine[yP Shr 15 + 1]
Else
Read2 := src.ScanLine[yP Shr 15];
pc := Dst.scanline[y];
z2 := yP And $7FFF;
iz2 := $8000 - z2;
For x := 0 To Dst.Width - 1 Do
Begin
t := xP Shr 15;
t3 := t * 3;
t13 := t3 + 3;
Col1r := Read[t3];
Col1g := Read[t3 + 1];
Col1b := Read[t3 + 2];
Col2r := Read2[t3];
Col2g := Read2[t3 + 1];
Col2b := Read2[t3 + 2];
z := xP And $7FFF;
w2 := (z * iz2) Shr 15;
w1 := iz2 - w2;
w4 := (z * z2) Shr 15;
w3 := z2 - w4;
pc[x * 3 + 2] :=
(Col1b * w1 + Read[t13 + 2] * w2 +
Col2b * w3 + Read2[t13 + 2] * w4) Shr 15;
pc[x * 3 + 1] :=
(Col1g * w1 + Read[t13 + 1] * w2 +
Col2g * w3 + Read2[t13 + 1] * w4) Shr 15;
// (t+1)*3 is now t13
pc[x * 3] :=
(Col1r * w1 + Read2[t13] * w2 +
Col2r * w3 + Read2[t13] * w4) Shr 15;
Inc(xP, xP2);
End;
Inc(yP, yP2);
End;
End;
添加两个image控件image1(放小一点),image2(放大一点;
给image1导入picture;image1就显示了一个小图片;
image2.canvas.StretchDraw(image2.cliprect,image1.pictuer.bitmap);
这样就会把image1里的图片转到image2中显示,而且有效的避免了色彩失真