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 处理的更多相关文章

  1. 学习笔记:7z在delphi的应用

    最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...

  2. delphi连接sql存储过程

    针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...

  3. delphi 2010与delphi XE破解版的冲突

    在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...

  4. [Delphi] Delphi版本号对照

    VER300    Delphi Seattle / C++Builder Seattle    23    230    (Delphi:Win32/Win64/OSX/iOS32/iOS64/An ...

  5. delphi tidhttp 超时设置无效的解决方法

    现在delphi都发布到xe8了,tidhttp还有缺陷,那就是超时设置在没有网络或者连不上服务器的时候是无效的,不管你设置为多少都要10-20秒.connectTimeout和readTimeout ...

  6. Delphi Code Editor 之 编辑器选项

    Delphi Code Editor 之 编辑器选项 可从Code Editor的右键菜单中选择“Properties”菜单项来查看编辑器选项.也可以从主菜单[Tools | Editor Optio ...

  7. Delphi使用ADO进行数据库编程

    Delphi是一个可视化的编程工具,ADO编程也是这样,所以话不多言,直接通过代码.截图和语言来说明. 我的数据库是Oracle,为了测试,先建一个表:create table practice(un ...

  8. 怎么使用Delphi获取当前的时间,精确到毫秒

    先介绍一个可能比较常用的方法,获取当前时间 var datetime: string; begin datetime:= FormatDateTime('yyyy-mm-dd hh:mm:ss', N ...

  9. Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元

    当使用了长字符串类型的参数.变量时,如string,要引用ShareMem. 虽然Delphi中的string功能很强大,但若是您编写的Dll文件要供其它编程语言调用时,最好使用PChar类型.如果您 ...

  10. Delphi控件之---通过编码学习TStringGrid(也会涉及到Panel控件,还有对Object Inspector的控件Events的介绍

    我是参考了万一的博客里面的关于TStringGrid学习的教程,但是我也结合自己的实际操作和理解,加入了一些个人的补充,至少对我有用! 学用TStringGrid之——ColCount.RowCoun ...

随机推荐

  1. Linux 内核中断内幕【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/ 本文对中断系统进行了全面的分析与探讨,主要包括中断控制器.中断分类 ...

  2. LeetCode(12):整数转罗马数字

    Medium! 题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 ...

  3. Laravel 自定义创建时间、更新时间字段

    Model 中,如果启动了 timestamps public $timestamps = true; 默认,laravel 会操作对应数据表的 created_at, updated_at 字段. ...

  4. 【pytorch】pytorch学习笔记(一)

    原文地址:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 什么是pytorch? pytorch是一个基于p ...

  5. Latex常用整理

    会不断更新添加,以便写论文的时候快速查找. 项目 带编号 \begin{enumerate} \setlength{\itemsep}{0pt} \setlength{\parsep}{0pt} \s ...

  6. mysql过滤数据

    1.大纲 WHERE - 学习如何使用WHERE子句根据指定的条件过滤行记录. AND运算符 - 介绍如何使用AND运算符以组合布尔表达式以形成用于过滤数据的复杂条件. OR运算符 - 介绍OR运算符 ...

  7. js数组遍历some、foreach、map、filter、every、lastIndexOf、indexOf对比

    1. [...].some(ck)函数 对数组中每个元素执行一次ck函数,知道某个元素返回true,则直接返回true.如果都返回false,则返回false 检查整个数组中是否有满足ck函数的元素. ...

  8. java学习之租车系统

    ​背景:有三种类型的车供给用户来租用​ ​要求:控制台用户交互界面,根据用户需求输出租车价格,结果如下: 创建租车类主要设计过程: 创建租车类 创建Car父类,包含四种属性成员,重写构造方法 创建三种 ...

  9. 2015 ACM Amman Collegiate Programming Contest 题解

    [题目链接] A - Who Is The Winner 模拟. #include <bits/stdc++.h> using namespace std; int T; int n; s ...

  10. querySelector/querySelectorAll选择器两个容易忽略的点

    jquery写得多了,原生js大API就容易忘.如果你也是这样,一起来回顾一下HTML5的类jquery选择器querySelector和querySelectorAll吧,querySelector ...