无逼格,不写作之一

by admin on 2019年1月11日

自家的天哪,上一篇博文是2年前的业务了。看来又虚度了2年生活,继续求学。。。
本文算是副产品,正品是利用FFmpeg从随机视频中生成GIF片段的小程序,等写完了再发。不为另外,只是为着给外甥做动图,且看不惯这种工具也要收费!

 
记得高一有次作文课上,班首席执行官点评着我们的作品。突然问了句:“为啥要创作?”“因为生存需要心境”。她进步了咽喉自问自答道。又点评了少时说,“有个同学的编有名字竟然取《人何以活着》!不得以取这样的名字的。”但她始终没说具体原因,也许这是妇人特有的说不出理由的第六感的案由吧。

常量

FileName定义了Bmp图片文件名,Count定义了测试循环的次数。

FileName='1.bmp';
Count=1000;
FontSize=20;

   
 上中学后,我对周围的世界心神不属。脑子不停地在“思考人生”。年轻人总会有些愤青的同情。由此,就相比喜欢写议杂谈。写多了就觉着很空。或者说,很难写的有新意。老师会说议故事集是“保险文”,不易拿低分,不易拿高分,一般60分会给个42-47分。对于表达文,好像高考一般不考表达文。
对于抒情文,我其实很佩服这么些能把“我很抑郁”,“我很伤感”之类的四字短语,拓展成“这思绪恰似夏日依恋在枝头这最终一片泛黄的纸牌,被呼呼的凉风毫不留情地吹去之时的无可奈何”之类的句子,进而写满800字的“异类”。因为,我光是读完那些文字,就有种蛋蛋的忧思~~
写记叙文吧,对于自然喜欢推理分析的头脑,天生紧缺小学初中教的光阴发展,空间发展和事件发展写作逻辑。倘使不那么写,这时候,卡夫卡神经质的小说,压根看不懂他在写些什么,自然也无能为力知晓,他这种通过人物的逻辑推导展开的叙事手法。想模仿伍尔芙的意识流,却写的莫名其妙。老师常说的随笔“形散而神不散”,我写起来就有种精神分裂的感觉。

总体源码

   还有种挺风尚的写法是“小题目”,例如,以“读书的滋味”为题,

关于VFW

DrawDibDraw是VFW(Video for
Windows
.aspx))中的API,关于DrawDibDraw的用法可以参见园子里的DrawDibDraw函数的接纳办法。封装文件VFW.pas来自一篇《delphi视频头编程vfw》,出处已不可考,被署名汤姆(Tom)Nuydens的改动过。

                                                                     
                                 自己的痕迹                       
                                                 

                                                       
 天空不留下鸟的印痕,但我一度飞过。      ————题记      

凝眸天空,感受时光的匆匆流去,有些惆怅,有些伤感,怎么样才能挽留这逝去的年轻?于是,我踏上了搜寻的旅程。。。 

界面

就放了多少个按钮而已,名称末尾为C的意味用了COLORONCOLOR形式,为H的表示用了HALFTONE情势。还有一个提姆(Tim)age控件。

  从上初中起,我以为自己是个很有想法的人。不会,像其别人一样随主流。似乎天生就有先生的出世,追求独一无二的本能。这篇《人何以活着》就是在下的“大作”(本认为是大手笔。。)。班主任第一次提到本人的小说,受宠若惊。但自身说不出去这样一个问题有什么问题。上高二的时候,看到语文课本里有一篇罗素(Russell)写的《我怎么活着》。心想,连Russell都如此写了,愈加觉得班老板的反射是小题大做,甚至有点浅薄。

测试结果

即便只关心结果,或者对Delphi不屑,这您就无需往下看了,我先提交结果吗。为您节约点时间。严酷意义上说,BitBlt不属于任何哥仨的阵营,因为不用缩放,所以速度自然快了。放在这里相比较,就当是个Baseline吧。

  1. 必发365乐趣网投手机版,DrawDibDraw.aspx)最快(1ms级别)。
    不到StretchBlt和StretchDIBits的一半,且不需要用SetStretchBltMode.aspx)设置哪些缩放情势,画质看不出分别。
  2. StretchBlt.aspx)和StretchDIBits.aspx)难分伯仲。
    用了色彩拟合格局(HALFTONE)的话会大大扩张总计量,耗时4倍,比DrawDibDraw慢1个数据级。提议收缩图像时可以用COLORONCOLOR情势,肉眼看不出区别,但足以比HALFTONE形式提速4倍!
API COLORONCOLOR HALFTONE
BitBlt 400 400
DrawDibDraw 1125 1125
StretchBlt 3000 11406
StretchDIBits 3203 11576
  • 测试用机:CPU: Intel i3 3220,内存: 8G DDRIII 1333,显卡: 英特尔 Radeon
    HD 7700 (对测试结果没影响吗),Windows 10专业版
  • 测试次数:1000次
  • 时光单位:millisecond(毫秒)
  • COLORONCOLOR:删除不需要的点。
    这是SetStretchBltMode的参数,指定目的设备(区域)的缩放模式。在用StretchDIBits和StretchBlt时务必得设置一个缩放形式,不然,嘿嘿,惨不忍睹。官方证实是:“Deletes
    the pixels. This mode deletes all eliminated lines of pixels without
    trying to preserve their
    information.”,闽南语意思大概就是:删除不需要的像素点。该情势删除所有无用的点阵,这个点的拥有音讯都反对保留。
    参见SetStretchBltMode.aspx)。
  • HALFTONE:将源区域的颜色溶入目标区域中去。
    效用同上。官方证实是:“Maps pixels from the source rectangle into
    blocks of pixels in the destination rectangle. The average color
    over the destination block of pixels approximates the color of the
    source
    pixels.”闽南语大概意思是:将源矩形区域的像素点音信拟合到对象区域广阔的四个像素块中。目标区域两个像素块的颜色值会举行平均,以便最大程度地接近源像素的色彩。参见SetStretchBltMode.aspx)。

 
 其实,我也不通晓为啥要编写。也许是编写是学业和考试的一片段吗。我不明了写作好除了能语文考得好以外还有如何意义。不过,照有多年完小教育的老妈的话来说,小学生告诉她们也听不懂。既然应试作文,就有对应的模板和套路。何人叫我们是“考试民族”呢。我高中室友整个中学生涯的编写几乎是同台背下来的。我说的是几乎,至少有一篇是他自己写的。我室友酷爱读古龙的随笔。有次考试,突然古龙附体,灵感大发,决定写篇
微小说。“夜,中午。山顶,五个人。。。。。”。考完试,他颇为得意地说,“我这一次考试写了篇小说。。”。只是,发下来的语文试卷让他有种石化的感觉
。当不断文艺青年的一般性青年往往会败坏成二逼青年。- -!

敲定和提出

  • 单独裁减画面的(源图一定比目的图大):StretchBlt、StretchDIBits随便用,先用SetStretchBltMode选COLORONCOLOR格局,性能丰硕了。
  • 不可以不加大画面的(源图比目标图小):要用StretchBlt、StretchDIBits,用SetStretchBltMode必须选HALFTONE情势。性能不可能经受可选DrawDibDraw。
  • 图方便用DrawDibDraw,可能要多耗些资源吧(没规范总计过)。
  • 图形性能要求更高的,啃DirectX、OpenGL、SDL去啊。代码不难,难的是要通晓那么多图形学概念。

  一天,我问她有没有好的写作软件。她向自己引进了简书   ——  题记

何以要测试 StretchBlt, StretchDIBits, DrawDibDraw 的属性

因为视频重放需要很高的显示性能,解码占了成千上万总计量,留给突显的年华不多,能优化则优化吧。

其实现在的CPU跑个视频播放已经绰绰有余了,GPU压根就不用用。尽管是用Delphi自带的TImage控件,用Bitmap往里填也得以满意普通播放需求了。假设时光倒流到10年前,这可正是得去研讨DirectX、OpenGL了。可惜关于这哥俩,大部分都是C、C++的资源,我啃了半天SDL,觉得有点杀鸡用牛刀。所以就想着先实现需求吧,真的特别了再优化吧。在自身的英特尔i3 3220上,用StretchDIBits播放视频时最多也就跑了22%。

  
初中的时候,文艺青年写作,开端总喜欢“题记”,所谓的点睛之笔。比如,如果以“奋斗的光景”为话题,

BMP文件读取

因为StretchBlt和BitBlt只需要提供源HDC,不需要用tagBITMAPINFO和原始RGB数据区作为参数,所以直接用了TBitmap控件载入图片文件。

procedure TMainForm.StretchBltDisplay;
var
  bmp : TBitmap ;
  i : Integer ;
  Start : DWORD ;
begin
  Bmp:= TBitmap.Create ;
  bmp.LoadFromFile(FileName);

  Start := GetTickCount ;
  for i := 1 to count do
  begin
    StretchBlt(image1.Canvas.Handle, 0, 0, image1.ClientWidth, image1.ClientHeight,
              bmp.Canvas.Handle, 0,0,bmp.Width,bmp.Height, SRCCOPY);
    image1.Canvas.TextOut(10,10,inttostr(i));
    image1.Refresh;
  end;
  MainForm.Caption := IntToStr(GetTickCount - Start);

  bmp.Free ;
end;

DrawDibDraw和DrawDibDraw都需要采纳BMP原始信息做参数,所以只能写了个LoadBmp从文件中读取数据。
因为要把本来消息带出来,所以带了var前缀。

procedure LoadBmp(bmpFile: String; var bmpinfo:TBitmapInfo; var pBmpData:Pointer);
var
  bmf: TBitmapFileHeader;
  imageSize: LongWord;
  Stream: TFileStream;
begin
   try
    Stream:= TFileStream.Create(bmpFile, fmOpenRead or fmShareDenyWrite);
    Stream.Read(bmf, sizeof(Bmf));
    Stream.Read(bmpinfo, sizeof(bmpinfo));
    imageSize:= bmf.bfSize-bmf.bfOffBits;
    stream.Seek(bmf.bfOffBits,0);

    FreeMem(pBmpData);
    GetMem(pBmpData, imageSize);

    Stream.Read(pBmpData^, ImageSize);
  finally
    FreeAndNil(Stream);
  end;
end;

   
鉴于鄙人的作品过于“写实”,本着“老实人会吃亏”的盘算,老爸要本人撰文的时候加点料。古龙曾经写到过,“骗人要7分真,3分假”。这句不知情是何人说的名言:“农学创作需要合理的杜撰。”老师也会教我们一篇作文如何套五个问题。这也挺无奈的呢,倘诺真作育写作的话,不是短暂的,要有必然的阅读量和讨论。但自身有时候会以为作文教学,是系统教育大家这代人说谎的首先课,但天性正直的自我断然拒绝了老爸那种被腐败的资产阶级所侵害的考虑。继续写自己的“白面包”著作。

源码

为什么还抱着Delphi不放?

  1. 性价比第一
    敢问性能、便捷、体积俱佳的Windows开发环境,何人敢和Delphi比?C#,Java是尽善尽美,可为了一个小效用就跑它个虚拟机,实在划不来啊。C++倒是够sharp,可学习过程太痛苦了,代码还不便于写。
  2. 全能
    都说Python好,可自己眼拙,实在看不出来好在啥地方,局限性太大。唯一的便宜是能让新手迅速上手编程,还有一个好处是能让您忘掉总括机是怎么运作的!
  3. 怀旧
    十几年前自学的事物,从Delphi
    3起首用,有情义了。只要Windows不截止对32位程序的襄助,我就会直接用下来。(关于这或多或少,我要狠狠鄙视Apple一下。)
  4. Delphi 7是经典
    和Visual
    Studio、水果同样,当年Borland的成品也有大小年,逢单的本子就是安静一些。尽管轮子有时候得从头伊始造,不过“知其所以然”是乐在其中的事,相信我!

                                                                     
                                读书的滋味

   高尔基说过:“书籍是全人类进化的台阶”(以下简单100字)

                                                                     
                                        酸

                                                                     
                         (以下简单175字)

                                                                     
                                         甜

                                                                     
                         (以下简单175字)

                                                                     
                                         苦

                                                                     
                           (以下简单175字)

                                                                     
                                         辣

                                                                     
                          (以下连结尾省略230字)                     
                                                                     
         

关于var前缀

一初阶认为,用指针就足以在函数内给外部的指针分配内存并传出结果了。但实际不对,外面的指针还直接是nil。必须带上var前缀才行(指针的指针)。

 
我不晓得有些许人在上高校在此之前是由衷喜欢创作的,反正自己是不那么喜欢。从小没什么语言天赋,准确点来说,写不出“草长莺飞的夏天”之类的天生丽质动人。同样,对于命题作文,“如沐春风的一天”,或是半命题作文,“首次____”之类大多无话可说。苦思冥想,憋出200字,但一篇作文至少500字。真不知道,就凭本人“前日,早晨7点四起了。吃过早餐就和三伯去公园玩了一天”这种流水式语言,该拿什么去抢救下面的300字。这时,我最欣赏写的就是一句话日记,“今日自我去打球了”,“后天本人帮外婆做家务了”。。。。老师说你们尚未生活经验,小孩子哪有什么阅历。我是躺在电视机前看《还珠格格》的,又不是从小去街头扛把子的,哪有那么跌荡起伏的人生。

声明

正文是首先寓目了求比Stretchblt方法更快的缩放算法的帖子,请参见其中署名为“张辉明”的过来。我做了优化和局部修正,但DrawDibDraw部分的调用是原文照录的。(其实上文就是我Bing了DrawDibDraw时搜到的。)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图