delphi Image 处理
procedure ResizeBmp(Src,Dst:String);
var SrcBM,DstBM:TBitMap;
Rect:TRect;
NewW,NewH,PicW,PicH:Integer;
HDivW:Double;
begin
SrcBM:=TBitMap.Create;
SrcBM.LoadFromFile(Src);
PicW:=SrcBM.Width;
PicH:=SrcBM.Height;
NewH:=768;
NewW:=1024;
DstBM:=TBitMap.Create;
with DstBM do begin
Width:=NewW;
Height:=NewH;
Rect.TopLeft:=Point(0,0);
Rect.BottomRight:=Point(NewW,NewH);
Canvas.Rectangle(0,0,Width,Height);
Canvas.StretchDraw(Rect,TGraphic(SrcBM));
SaveToFile(Dst);
FreeImage;
Free;
end;
end;
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.Math;
type
TForm1 = class(TForm)
img1: TImage;
btn1: TButton;
btn2: TButton;
grp1: TGroupBox;
img2: TImage;
btn3: TButton;
btn4: TButton;
img3: TImage;
btn5: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
bmp: TBitmap;
oRect: TRect;
begin
bmp := TBitmap.Create;
bmp.LoadFromFile('D:\12.bmp');
// img1.Picture.LoadFromFile('D:\2.bmp');
// img1.Width := img1.Picture.Width;
// img1.Height := img1.Picture.Height;
// img1.Width := img1.Picture.Width + 50;
// img1.Height := img1.Picture.Height + 50;
// img1.ClientWidth := 200;
// img1.ClientHeight := 200;
oRect.Left := Round((img1.ClientRect.Width - bmp.Width)/2);
oRect.Top := Round((img1.ClientRect.Height - bmp.Height)/2);
oRect.Width := bmp.Width;
oRect.Height:= bmp.Height;
img1.Canvas.StretchDraw(oRect, bmp);
img1.Center := true;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
img1.Canvas.TextOut(0,0, 'haha');
end;
procedure TForm1.btn3Click(Sender: TObject);
var SrcBM,DstBM:TBitMap;
Rect:TRect;
NewW,NewH,PicW,PicH:Integer;
HDivW:Double;
scale_X, scale_Y: double;
zoom: double;
izoom: Integer;
begin
SrcBM:=TBitMap.Create;
SrcBM.LoadFromFile('D:\12.bmp');
PicW:=SrcBM.Width;
PicH:=SrcBM.Height;
zoom := img2.Width/SrcBM.Width;
NewH:=Round(SrcBM.Height * zoom);
NewW:=Round(SrcBM.Width * zoom);
DstBM:=TBitMap.Create;
with DstBM do
begin
Width:=NewW;
Height:=NewH;
Rect.TopLeft:=Point(0,0);
Rect.BottomRight:=Point(NewW,NewH);
Canvas.Rectangle(0,0,Width,Height);
Canvas.StretchDraw(Rect,TGraphic(SrcBM));
img2.Picture.Bitmap.Assign(DstBM);
img2.Canvas.TextOut(0, 0, '111');
// FreeImage;
// Free;
end;
SrcBM.Free;
DstBM.Free;
end;
{
procedure TForm1.btn3Click(Sender: TObject);
var SrcBM,DstBM:TBitMap;
Rect:TRect;
NewW,NewH,PicW,PicH:Integer;
HDivW:Double;
begin
SrcBM:=TBitMap.Create;
SrcBM.LoadFromFile('D:\12.bmp');
PicW:=SrcBM.Width;
PicH:=SrcBM.Height;
NewH:=100;
NewW:=80;
DstBM:=TBitMap.Create;
with DstBM do
begin
Width:=NewW;
Height:=NewH;
Rect.TopLeft:=Point(0,0);
Rect.BottomRight:=Point(NewW,NewH);
Canvas.Rectangle(0,0,Width,Height);
Canvas.StretchDraw(Rect,TGraphic(SrcBM));
img2.Picture.Bitmap.Assign(DstBM);
img2.Canvas.TextOut(0, 0, '111');
// FreeImage;
// Free;
end;
SrcBM.Free;
DstBM.Free;
end;
}
procedure TForm1.btn5Click(Sender: TObject);
begin
img3.Picture.LoadFromFile('D:\12.bmp');
end;
end.
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 810
ClientWidth = 1035
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object img1: TImage
Left = 32
Top = 24
Width = 105
Height = 105
end
object btn1: TButton
Left = 143
Top = 40
Width = 75
Height = 25
Caption = 'btn1'
TabOrder = 0
OnClick = btn1Click
end
object btn2: TButton
Left = 143
Top = 104
Width = 75
Height = 25
Caption = 'btn2'
TabOrder = 1
OnClick = btn2Click
end
object grp1: TGroupBox
Left = 256
Top = 24
Width = 633
Height = 721
Caption = 'grp1'
TabOrder = 2
object img2: TImage
Left = 80
Top = 48
Width = 105
Height = 105
end
object img3: TImage
Left = 72
Top = 232
Width = 289
Height = 273
end
object btn3: TButton
Left = 264
Top = 40
Width = 75
Height = 25
Caption = 'btn3'
TabOrder = 0
OnClick = btn3Click
end
object btn4: TButton
Left = 264
Top = 104
Width = 75
Height = 25
Caption = 'btn4'
TabOrder = 1
end
object btn5: TButton
Left = 416
Top = 264
Width = 75
Height = 25
Caption = 'btn5'
TabOrder = 2
OnClick = btn5Click
end
end
end
delphi Image 处理的更多相关文章
- 学习笔记:7z在delphi的应用
最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...
- delphi连接sql存储过程
针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...
- delphi 2010与delphi XE破解版的冲突
在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...
- [Delphi] Delphi版本号对照
VER300 Delphi Seattle / C++Builder Seattle 23 230 (Delphi:Win32/Win64/OSX/iOS32/iOS64/An ...
- delphi tidhttp 超时设置无效的解决方法
现在delphi都发布到xe8了,tidhttp还有缺陷,那就是超时设置在没有网络或者连不上服务器的时候是无效的,不管你设置为多少都要10-20秒.connectTimeout和readTimeout ...
- Delphi Code Editor 之 编辑器选项
Delphi Code Editor 之 编辑器选项 可从Code Editor的右键菜单中选择“Properties”菜单项来查看编辑器选项.也可以从主菜单[Tools | Editor Optio ...
- Delphi使用ADO进行数据库编程
Delphi是一个可视化的编程工具,ADO编程也是这样,所以话不多言,直接通过代码.截图和语言来说明. 我的数据库是Oracle,为了测试,先建一个表:create table practice(un ...
- 怎么使用Delphi获取当前的时间,精确到毫秒
先介绍一个可能比较常用的方法,获取当前时间 var datetime: string; begin datetime:= FormatDateTime('yyyy-mm-dd hh:mm:ss', N ...
- Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元
当使用了长字符串类型的参数.变量时,如string,要引用ShareMem. 虽然Delphi中的string功能很强大,但若是您编写的Dll文件要供其它编程语言调用时,最好使用PChar类型.如果您 ...
- Delphi控件之---通过编码学习TStringGrid(也会涉及到Panel控件,还有对Object Inspector的控件Events的介绍
我是参考了万一的博客里面的关于TStringGrid学习的教程,但是我也结合自己的实际操作和理解,加入了一些个人的补充,至少对我有用! 学用TStringGrid之——ColCount.RowCoun ...
随机推荐
- mongodb导出数据csv格式
mongoexport -d test -c item --type=csv -f salary,city,workYear,companyShortName -o user.csvmongoexpo ...
- Java练习之使用StringBuilder
package string.demo; /* * 将数组变为字符串输出 */ public class StringBuilderTest { /** * @param args */ public ...
- Linux下USB suspend/resume源码分析【转】
转自:http://blog.csdn.net/aaronychen/article/details/3928479 Linux下USB suspend/resume源码分析 Author:aaron ...
- MAC连接安卓手机通过adb指令安装apk
Android的apk可以通过adb命令来安装.在MAC电脑上,如果想通过命令行的方式给安卓手机安装apk,需要做以下操作: 一句话概括就是:将安卓SDK的adb命令添加到环境变量中,然后通过adb ...
- activiti主要组件解析
Activiti内部实现中,各主要部件关系 对外,提供Service服务,它是无状态的. 这些Service包括: protected RepositoryService repositoryServ ...
- POJ 1948 Triangular Pastures
题意: 把很多单独的线段重新组合成一个三角形,使得三角形面积最大(所有的线段都必须用上). 思路: 三角形的任意一条边的边长不能超过周长的一半,只需要用dp枚举两条边j,k,剩下的一条边长为tot ...
- OCR识别-python3.5版
刚接触,啥子都不会,按着教程走 需求:识别图片中的文字信息环境:windows系统 开发语言:python3.5 使用工具类:1.pyocr 2.PIL 3.tesseract-ocr 步骤: 1.p ...
- extjs6入门:用sencha cmd搭建简单的extjs6项目
开发准备 1.sencha cmd安装 2.extjs6.0.0 gpl正式版下载,地址:https://www.sencha.com/legal/gpl/ ,解压ext-6.0.0-gpl.zip ...
- .NetCore 利用Jenkins在 Windows平台下打包发布Angular项目
准备环境 安装Jenkins 首先装node,版本根据实际环境而定(node安装包中包含了npm) 安装一般都配置好了环境变量,检查下如果没有就配置下 Jenkins中安装NPM插件 GIt获取代码 ...
- 如何用prometheus监控k8s集群中业务pod的metrics
一般,我们从网上看到的帖子和资料, 都是用prometheus监控k8s的各项资源, 如api server, namespace, pod, node等. 那如果是自己的业务pod上的自定义metr ...