吉 吉花 Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-07 #1 各位: 我想对Image或其他控件中的bmp文件进行 局部放大,不是对像素进行放大,而是增加像素 的放大,不知是否可能?如果可能,如何实现?
W www Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-07 #2 canvas.copyrect(derect,decanvas,srrect);
兔 兔子皮皮 Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-07 #3 在Delphi中,可利用类Tcanvas的CopyRect方法实现图象的放大和缩小。其功能是 将源画布上的一个指定矩形区域(简称源矩形)内的象素,拷贝到目的画布上的一 个指定矩形区域(简称目的矩形)中。亦可称之为象素块复制。 由CopyMode属性确定拷贝的模式。在直接拷贝模式(cmSrcCopy)下,当源矩形与 目的矩形相等时,图象不变;若源矩形大于目的矩形,图象则缩小;而当源矩形小 于目的矩形时,图象便被放大(在目的矩形中扩展)。源矩形与目的矩形大小之 比,决定图象的缩放倍数。CopyRect方法声明如下: Procedure CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: Trect);
在Delphi中,可利用类Tcanvas的CopyRect方法实现图象的放大和缩小。其功能是 将源画布上的一个指定矩形区域(简称源矩形)内的象素,拷贝到目的画布上的一 个指定矩形区域(简称目的矩形)中。亦可称之为象素块复制。 由CopyMode属性确定拷贝的模式。在直接拷贝模式(cmSrcCopy)下,当源矩形与 目的矩形相等时,图象不变;若源矩形大于目的矩形,图象则缩小;而当源矩形小 于目的矩形时,图象便被放大(在目的矩形中扩展)。源矩形与目的矩形大小之 比,决定图象的缩放倍数。CopyRect方法声明如下: Procedure CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: Trect);
吉 吉花 Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-07 #4 我的程序是这样写的: var drect,srect:TRect; origin:TPoint; begin srect:=rect(0,0,10,10); drect:=rect(0,0,20,20); Image1.Canvas.CopyMode:=cmSrcCopy; Image1.Canvas.CopyRect(drect,image2.canvas,srect); end; 可是结果是将image1 中的左上角的一个小矩形(0,0,10,10) 中的图像变成白颜色,而image2中的图像全是白颜色, 这是怎么回事?
我的程序是这样写的: var drect,srect:TRect; origin:TPoint; begin srect:=rect(0,0,10,10); drect:=rect(0,0,20,20); Image1.Canvas.CopyMode:=cmSrcCopy; Image1.Canvas.CopyRect(drect,image2.canvas,srect); end; 可是结果是将image1 中的左上角的一个小矩形(0,0,10,10) 中的图像变成白颜色,而image2中的图像全是白颜色, 这是怎么回事?
K Keyes Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-07 #5 var d,s:Trect ......... image1.Canvas.CopyRect(s,image1.canvas,d); image1.Canvas.StretchDraw(d,image.picture.Bitmap);
var d,s:Trect ......... image1.Canvas.CopyRect(s,image1.canvas,d); image1.Canvas.StretchDraw(d,image.picture.Bitmap);
C cloudhzg Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-09 #6 我看了其他人的回答,似乎不是你想要的答案,你所说的不是对像素进行放大, 而是增加像素这究竟是什么意思,如果只是想显示放大后的图像,用copyrect 可以很方便的实现,否则如果想编辑放大后的图像,最好自己写程序实现,即 扫描每一个像素点,再重画,我做计算机图形学作业时就用的这种方法
我看了其他人的回答,似乎不是你想要的答案,你所说的不是对像素进行放大, 而是增加像素这究竟是什么意思,如果只是想显示放大后的图像,用copyrect 可以很方便的实现,否则如果想编辑放大后的图像,最好自己写程序实现,即 扫描每一个像素点,再重画,我做计算机图形学作业时就用的这种方法
C Crane Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-09 #7 除非是矢量图,否则不可能进行所谓"象素"放大,可以边缘差分,但如果 原图有600个像点,你不可能再平空造出更多的像点.只能单纯增减每个 像点的象素,比如1个像点原来由一个象素组成,现在由四个象素组成, 其图象就等于被放大了,放大后用3*3的样条对直方图作积和运算, 可以将马赛克消除一些,此样条许多图形学的书里都有,你可以查一下, 反证我是忘了具体数值了.
除非是矢量图,否则不可能进行所谓"象素"放大,可以边缘差分,但如果 原图有600个像点,你不可能再平空造出更多的像点.只能单纯增减每个 像点的象素,比如1个像点原来由一个象素组成,现在由四个象素组成, 其图象就等于被放大了,放大后用3*3的样条对直方图作积和运算, 可以将马赛克消除一些,此样条许多图形学的书里都有,你可以查一下, 反证我是忘了具体数值了.
吉 吉花 Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-10 #8 是这样一个问题:一张bmp图片,原始尺寸是 480X240(比如说)现在要将该图片的任意一部分 取出,并放大,理论上能否将放大部分的清晰度 增加?(如果不做任何处理,将仅仅是简单地将 选取的部分的像素放大,这样会使画面变模糊) 也就是是否一定要加额外的算法?还是有一些简单 的处理技巧即可实现。
是这样一个问题:一张bmp图片,原始尺寸是 480X240(比如说)现在要将该图片的任意一部分 取出,并放大,理论上能否将放大部分的清晰度 增加?(如果不做任何处理,将仅仅是简单地将 选取的部分的像素放大,这样会使画面变模糊) 也就是是否一定要加额外的算法?还是有一些简单 的处理技巧即可实现。
H heianqishi Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-10 #9 如果我认为的对的话,你的意思想把原图的选定部分按现实的方式放大,而不是按简单的百分倍比进行放大,就像它自己长大一样. 我想这需要自己给出好的算法,事实上,更需要建模.就目前的图形处理软件,还没有那个能对所有图像进行这种处理的,一般要给出被处理的图像的基本特征:例如:人,房子等等.不过就简单的放大,用DELPHI的StrechDraw效果不错.
如果我认为的对的话,你的意思想把原图的选定部分按现实的方式放大,而不是按简单的百分倍比进行放大,就像它自己长大一样. 我想这需要自己给出好的算法,事实上,更需要建模.就目前的图形处理软件,还没有那个能对所有图像进行这种处理的,一般要给出被处理的图像的基本特征:例如:人,房子等等.不过就简单的放大,用DELPHI的StrechDraw效果不错.
K kerry Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-16 #10 using api will be good strectchblt(form1.canvas.handle,image1.width*2,image1.height*2, image1.canvas.handle,0,0,image1.width,image1.height,srcand) this will make the image to 200 %
using api will be good strectchblt(form1.canvas.handle,image1.width*2,image1.height*2, image1.canvas.handle,0,0,image1.width,image1.height,srcand) this will make the image to 200 %
F fhb Unregistered / Unconfirmed GUEST, unregistred user! 2000-01-26 #11 http://www.huzhou.zj.cn/~fhb/html/czoom.html
S sfeng Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-06 #14 非常简单的问题,你的意思是把图象差值放大后再显示一个局部区域,具体算法太长,若需可来信.
G g622 Unregistered / Unconfirmed GUEST, unregistred user! 2000-03-06 #15 sfeng: 我也想要:g622@xju.edu.cn