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 ...
随机推荐
- Linux 内核中断内幕【转】
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/ 本文对中断系统进行了全面的分析与探讨,主要包括中断控制器.中断分类 ...
- LeetCode(12):整数转罗马数字
Medium! 题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 ...
- Laravel 自定义创建时间、更新时间字段
Model 中,如果启动了 timestamps public $timestamps = true; 默认,laravel 会操作对应数据表的 created_at, updated_at 字段. ...
- 【pytorch】pytorch学习笔记(一)
原文地址:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 什么是pytorch? pytorch是一个基于p ...
- Latex常用整理
会不断更新添加,以便写论文的时候快速查找. 项目 带编号 \begin{enumerate} \setlength{\itemsep}{0pt} \setlength{\parsep}{0pt} \s ...
- mysql过滤数据
1.大纲 WHERE - 学习如何使用WHERE子句根据指定的条件过滤行记录. AND运算符 - 介绍如何使用AND运算符以组合布尔表达式以形成用于过滤数据的复杂条件. OR运算符 - 介绍OR运算符 ...
- js数组遍历some、foreach、map、filter、every、lastIndexOf、indexOf对比
1. [...].some(ck)函数 对数组中每个元素执行一次ck函数,知道某个元素返回true,则直接返回true.如果都返回false,则返回false 检查整个数组中是否有满足ck函数的元素. ...
- java学习之租车系统
背景:有三种类型的车供给用户来租用 要求:控制台用户交互界面,根据用户需求输出租车价格,结果如下: 创建租车类主要设计过程: 创建租车类 创建Car父类,包含四种属性成员,重写构造方法 创建三种 ...
- 2015 ACM Amman Collegiate Programming Contest 题解
[题目链接] A - Who Is The Winner 模拟. #include <bits/stdc++.h> using namespace std; int T; int n; s ...
- querySelector/querySelectorAll选择器两个容易忽略的点
jquery写得多了,原生js大API就容易忘.如果你也是这样,一起来回顾一下HTML5的类jquery选择器querySelector和querySelectorAll吧,querySelector ...