亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi常見圖象格式轉(zhuǎn)換技術(shù)(二)

2019-11-18 18:47:43
字體:
供稿:網(wǎng)友

Delphi常見圖象格式轉(zhuǎn)換技術(shù)(二)
作者:lyboy99
e-mail:lyboy99@sina.com  
url: http://hnh.126.com

給大家提供幾個常用的圖象格式轉(zhuǎn)換方法和其轉(zhuǎn)換函數(shù)
希望可以對你有幫助

1.TxT 轉(zhuǎn)換為 GIF
2.WMF格式轉(zhuǎn)換為BMP格式
3.BMP格式轉(zhuǎn)換為WMF格式
4.TBitmaps to Windows Regions
-----------------------------------------------------------------------
TxT 轉(zhuǎn)換為 GIF
------------------------------------------------
PRocedure TxtToGif (txt, FileName: String);
var
    temp: TBitmap;
    GIF : TGIFImage;
begin

temp:=TBitmap.Create;
try
        temp.Height     :=400;
        temp.Width      :=60;
        temp.Transparent:=True;
        temp.Canvas.Brush.Color:=colFondo.ColorValue;
        temp.Canvas.Font.Name:=Fuente.FontName;
        temp.Canvas.Font.Color:=colFuente.ColorValue;
        temp.Canvas.TextOut (10,10,txt);
        Imagen.Picture.Assign(nil);

      GIF := TGIFImage.Create;
      try
       
        GIF.Assign(Temp);
        //保存 GIF
        GIF.SaveToFile(FileName);
        Imagen.Picture.Assign (GIF);
     finally
        GIF.Free;
      end;

Finally

        temp.Destroy;
End;
end;
---------------------------------------------------------------------
2.WMF格式轉(zhuǎn)換為BMP格式

--------------------------------------------------------------------
procedure WmfToBmp(FicheroWmf,FicheroBmp:string); 
var 
  MetaFile:TMetafile; 
  Bmp:TBitmap; 
begin 
  Metafile:=TMetaFile.create; 
  {Create a Temporal Bitmap} 
  Bmp:=TBitmap.create; 
  {Load the Metafile} 
  MetaFile.LoadFromFile(FicheroWmf); 
  {Draw the metafile in Bitmap's canvas} 
  with Bmp do 
  begin 
   Height:=Metafile.Height; 
   Width:=Metafile.Width; 
   Canvas.Draw(0,0,MetaFile); 
   {Save the BMP} 
   SaveToFile(FicheroBmp); 
   {Free BMP} 
   Free; 
  end; 
  {Free Metafile} 
  MetaFile.Free; 
end; 


---------------------------------------------------------------------
3.BMP格式轉(zhuǎn)換為WMF格式
---------------------------------------------------------------------
procedure BmpToWmf (BmpFile,WmfFile:string); 
var 
  MetaFile : TMetaFile; 
  MFCanvas : TMetaFileCanvas; 
  BMP : TBitmap; 
begin 
  {Create temps} 
  MetaFile := TMetaFile.Create; 
  BMP := TBitmap.create; 
  BMP.LoadFromFile(BmpFile); 
  {Igualemos tama?os} 
  {Equalizing sizes} 
  MetaFile.Height := BMP.Height; 
  MetaFile.Width := BMP.Width; 
  {Create a canvas for the Metafile} 
  MFCanvas:=TMetafileCanvas.Create(MetaFile, 0); 
  with MFCanvas do 
  begin 
  {Draw the BMP into canvas} 
  Draw(0, 0, BMP); 
  {Free the Canvas} 
  Free; 
  end; 
  {Free the BMP} 
  BMP.Free; 
  with MetaFile do 
  begin 
  {Save the Metafile} 
  SaveToFile(WmfFile); 
   {Free it...} 
  Free; 
  end; 
end;

---------------------------------------------------------------------

4.TBitmaps to Windows Regions
---------------------------------------------------------------------
function BitmapToRegion(bmp: TBitmap; TransparentColor: TColor=clBlack;
  RedTol: Byte=1; GreenTol: Byte=1; BlueTol: Byte=1): HRGN;
const
  AllocUnit = 100;
type
  PRectArray = ^TRectArray;
  TRectArray = Array[0..(MaxInt div SizeOf(TRect))-1] of TRect;
var
  pr: PRectArray;   
  h: HRGN;         
  RgnData: PRgnData;
  lr, lg, lb, hr, hg, hb: Byte;
  x,y, x0: Integer; 
  b: PByteArray;   
  ScanLinePtr: Pointer;
  ScanLineInc: Integer;
  maxRects: Cardinal;  
begin
  Result := 0;
  { Keep on hand lowest and highest values for the "transparent" pixels }
  lr := GetRValue(TransparentColor);
  lg := GetGValue(TransparentColor);
  lb := GetBValue(TransparentColor);
  hr := Min($ff, lr + RedTol);
  hg := Min($ff, lg + GreenTol);
  hb := Min($ff, lb + BlueTol);
 
  bmp.PixelFormat := pf32bit;
 
  maxRects := AllocUnit;
  GetMem(RgnData,SizeOf(RGNDATAHEADER) + (SizeOf(TRect) * maxRects));
  try
    with RgnData^.rdh do
    begin
      dwSize := SizeOf(RGNDATAHEADER);
      iType := RDH_RECTANGLES;
      nCount := 0;
      nRgnSize := 0;
      SetRect(rcBound, MAXLONG, MAXLONG, 0, 0);
    end;
 
    ScanLinePtr := bmp.ScanLine[0];
    ScanLineInc := Integer(bmp.ScanLine[1]) - Integer(ScanLinePtr);
    for y := 0 to bmp.Height - 1 do
    begin
      x := 0;
      while x < bmp.Width do
      begin
        x0 := x;
        while x < bmp.Width do
        begin
          b := @PByteArray(ScanLinePtr)[x*SizeOf(TRGBQuad)];
          // BGR-RGB: Windows 32bpp BMPs are made of BGRa quads (not RGBa)
          if (b[2] >= lr) and (b[2] <= hr) and
             (b[1] >= lg) and (b[1] <= hg) and
             (b[0] >= lb) and (b[0] <= hb) then
            Break; // pixel is transparent
          Inc(x);
        end;
        { test to see if we have a non-transparent area in the image }
        if x > x0 then
        begin
          { increase RgnData by AllocUnit rects if we exceeds maxRects }
          if RgnData^.rdh.nCount >= maxRects then
          begin
            Inc(maxRects,AllocUnit);
            ReallocMem(RgnData,SizeOf(RGNDATAHEADER) + (SizeOf(TRect) * MaxRects));
          end;
          { Add the rect (x0, y)-(x, y+1) as a new visible area in the region }
          pr := @RgnData^.Buffer; // Buffer is an array of rects
          with RgnData^.rdh do
          begin
            SetRect(pr[nCount], x0, y, x, y+1);
            { adjust the bound rectangle of the region if we are "out-of-bounds" }
            if x0 < rcBound.Left then rcBound.Left := x0;
            if y < rcBound.Top then rcBound.Top := y;
            if x > rcBound.Right then rcBound.Right := x;
            if y+1 > rcBound.Bottom then rcBound.Bottom := y+1;
            Inc(nCount);
          end;
        end; // if x > x0
      
       
        if RgnData^.rdh.nCount = 2000 then
        begin
          h := ExtCreateRegion(nil, SizeOf(RGNDATAHEADER) + (SizeOf(TRect) * maxRects), RgnData^);
          if Result > 0 then
          begin // Expand the current region
            CombineRgn(Result, Result, h, RGN_OR);
            DeleteObject(h);
          end
          else  // First region, assign it to Result
            Result := h;
          RgnData^.rdh.nCount := 0;
          SetRect(RgnData^.rdh.rcBound, MAXLONG, MAXLONG, 0, 0);
        end;
        Inc(x);
      end; // scan every sample byte of the image
      Inc(Integer(ScanLinePtr), ScanLineInc);
    end;
    { need to call ExCreateRegion one more time because we could have left    }
    { a RgnData with less than 2000 rects, so it wasn't yet created/combined  }
    h := ExtCreateRegion(nil, SizeOf(RGNDATAHEADER) + (SizeOf(TRect) * MaxRects), RgnData^);
    if Result > 0 then
    begin
      CombineRgn(Result, Result, h, RGN_OR);
      DeleteObject(h);
    end
    else
      Result := h;
  finally
    FreeMem(RgnData,SizeOf(RGNDATAHEADER) + (SizeOf(TRect) * MaxRects));
  end;

----------------------------------------------------------------------------------


上一篇:Delphi下常用數(shù)學(xué)運算函數(shù)

下一篇:Delphi下常用轉(zhuǎn)換(一)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

国产 日韩 欧美 综合 一区| 男人的天堂成人在线| 激情小视频在线观看| 欧美一级生活片| 91极品女神私人尤物在线播放| 国产成人精品18| 国产精品入口麻豆完整版| 久久免费视频1| 两根大肉大捧一进一出好爽视频| 成人午夜在线视频一区| 日韩欧美亚洲一区二区三区| 日本黄色免费| 国产无套粉嫩白浆在线2022年| 久久精品国产亚洲一区二区三区| 香蕉久久夜色精品| 久久久一二三| 青青草国产成人av片免费| 精品久久对白| 狠狠色噜噜狠狠狠888奇米| 亚洲成人福利视频| 五码日韩精品一区二区三区视频| 精品人妻二区中文字幕| 国产+成+人+亚洲欧洲在线| 欧美色涩在线第一页| 美女av免费在线观看| 潘金莲激情呻吟欲求不满视频| 久久精品久久综合| 最新成人av在线| 成人av网址在线| 色老板在线观看| 日韩欧美在线网址| 久久中文资源| 99久久精品国产一区二区三区| 日韩三级av在线播放| 亚洲综合中文字幕在线观看| 日韩成人午夜影院| 日韩欧美国产高清91| 亚洲欧美精品在线| 国产一级黄色av| 北京富婆泄欲对白| 在线电影av不卡网址| 国产精品啪视频| 欧美二区视频| 亚洲少妇中出一区| 欧美日韩在线大尺度| 91av入口| 欧美精品久久| 国产精品成人一区二区艾草| 色欲久久久天天天综合网| 欧美在线一区二区三区四| 国产精品国产三级国产aⅴ9色| 秋霞国产午夜精品免费视频| 欧美影视一区二区三区| 国产三级伦理在线| 麻豆成人av在线| 欧美综合另类| 美女张开让男人捅| 性欧美大战久久久久久久久| 欧美丝袜丝交足nylons| 色丁香婷婷综合久久| 免费看91视频| 首页综合国产亚洲丝袜| 18禁网站免费无遮挡无码中文| 蜜桃视频在线观看91| 欧美日韩91| 国产精品1luya在线播放| 国产精品综合久久久| 日韩精品一区二区三区三区免费| 国产乱码在线观看| 亚洲电影成人av99爱色| 99re这里只有精品视频首页| 色哟哟一区二区三区| 女人扒开腿免费视频app| 国产99久久久国产精品免费看| 青青草原网站在线观看| 中文字幕在线观看第三页| 国产精品电影一区二区三区| 精品72久久久久中文字幕| 亚洲欧美不卡| 日韩一本精品| 奇米亚洲欧美| 亚洲一区二区自偷自拍| 亚洲小说图片区| 久久亚洲精品国产亚洲老地址| 欧美男女性生活在线直播观看| 亚洲h在线观看| 青青操在线观看| 日产亚洲一区二区三区| 波多野吉衣av| 国产富婆一区二区三区| 午夜男人视频在线观看| 成人av综合网| 久久99热精品| 成人噜噜噜噜| 日本最新一区二区三区视频观看| 99亚洲精品视频| 在线观看免费国产小视频| 久久99精品国产自在现线| 国产丰满美女做爰| 久久人人超碰精品| 韩国三级中文字幕hd久久精品| 日韩视频在线免费播放| 天堂中文在线播放| 在线精品亚洲| 男人操女人免费网站| 在线播放精品视频| 亚洲欧美三级在线| 洋洋av久久久久久久一区| 久久精品www| 国产亚洲色婷婷久久99精品| 蜜桃一区二区三区在线| 自拍视频亚洲| 缴情综合网五月天| 欧美尿孔扩张虐视频| 韩国欧美国产1区| 国产在线综合视频| 国产精品久久久久久久久免费丝袜| 一区二区三区伦理片| 潘金莲一级淫片aaaaaa播放1| av电影在线观看不卡| 三上悠亚在线观看| 国产日产精品一区二区三区四区的观看方式| 亚洲国产精品www| 国产精品自拍三区| 一区二区三区无码高清视频| 亚洲视频 欧美视频| 国产精品论坛| 中国人与牲禽动交精品| 国产精品久久久久久人| 欧美性受极品xxxx喷水| 亚洲天堂男人网| 日日碰狠狠丁香久燥| 欧美日本成人| 国产娇喘精品一区二区三区图片| 欧美与黑人午夜性猛交久久久| 日本免费黄色| 91精品视频观看| 日韩天堂在线视频| 日韩av在线导航| 午夜免费性福利| 美女视频一区免费观看| 粉嫩一区二区三区在线看| 成人小说亚洲一区二区三区| www免费在线观看| 在线成人免费观看| 色综合天天综合网天天狠天天| 高清无码一区二区在线观看吞精| 国产香蕉成人综合精品视频| 91精品国产91久久久久久吃药| 久久久久亚洲av无码a片| 亚洲午夜性刺激影院| 乱亲女秽乱长久久久| 欧美中文在线字幕| 香蕉污视频在线观看| xx欧美视频| 久草成色在线| 波多野结衣久久久久| 91视频综合网| 亚洲欧洲国产日韩| 久久国产精品波多野结衣av| 激情图片在线观看高清国产| 国产精品第13页| 成年人免费观看的视频| 国产日产精品_国产精品毛片| 一区二区日韩电影| 精品一区久久久久久| 精产国品一区二区| 久88久久88久久久| 1区2区在线观看| 国产偷亚洲偷欧美偷精品| 最新欧美电影| 免费污污视频在线观看| 一道本无吗一区| 午夜影院免费| 绿色成人影院| 欧美一区网站| 亚洲精品国产精品自产a区红杏吧| 人妻中文字幕一区二区三区| av日韩在线免费| 午夜精品影院在线观看| 五月亚洲婷婷| 亚洲成年人专区| 国产区在线观看成人精品| 高清视频欧美一级| 欧美性受极品xxxx喷水| 91好吊色国产欧美日韩在线| 久久久久久色| 青青草综合视频| 久久丫精品久久丫| 最新中文乱码字字幕在线| 日本a级片免费| jizz日本免费| 欧美大片免费播放| 中文字幕五月天| 亚洲成人a**址| 国产精品一区二区在线免费观看| 在线āv视频| 国产精品a级| 亚洲香蕉网站| 午夜视频在线观看免费视频| 久久人人精品| 精品国偷自产在线视频| 亚洲欧美偷拍另类| 国产日韩欧美亚洲一区| 一区二区三区av电影| 欧美亚洲日本黄色| 3d动漫精品啪啪1区2区免费| 亚洲欧洲日韩综合| 国产乱人伦精品一区| 爱久久·www| 久久精品国产亚洲a∨麻豆| 亚洲摸下面视频| 日韩中文在线电影| 欧洲激情综合| 久久精品一本| 秋霞影院一区二区三区| 天天操精品视频| 日韩视频二区| 欧美一区二区三区免费观看| 日韩动漫在线观看| 高清中文字幕一区二区三区| 欧美一区二区三区公司| 小说区图片区综合久久88| a天堂视频在线| 国产高清精品在线| 国产一级淫片久久久片a级| 色av中文字幕一区| 精品国产999| 日韩xxx高潮hd| 免费裸体美女网站| 欧美三级第一页| 中文字幕第5页| 色婷婷综合视频| 女明星视频黄又免费| 欧美午夜视频| 欧美一区一区| 中国丰满人妻videoshd| 人人做人人爽人人爱| 国产91精品最新在线播放| 99精品黄色片免费大全| 波多野结衣精品久久| 亚洲欧美另类图片| 污污的视频网站在线观看| 俄罗斯男人又粗又大| 成人做爰69片免费看网站| 搡老女人一区二区三区视频tv| 欧美日韩国产精品一区| 欧洲亚洲免费在线| 国产精品午夜一区二区欲梦| 性欧美video另类hd3| 欧美亚洲综合网| 欧美亚一区二区三区| 亚洲成人精品电影在线观看| 久久se精品一区二区| 国产成人午夜精品影院观看视频| 日本三级在线观看网站| 老司机aⅴ在线精品导航| 波多野结衣爱爱| www.激情小说.com| 91欧美激情另类亚洲| 国产精品久久久久久久久久久不卡| 888av在线视频| 国产探花精品一区二区| 日本人成精品视频在线| 99re6在线精品视频免费播放| 国产永久免费| 在线日韩av| 亚洲国产精品久久久久婷蜜芽| 婷婷av一区二区三区| 日韩电影一区二区三区| 性久久久久久久| 久久久久久久久久91| 82av视频| youjizz.com亚洲| 91成品视频入口| 精品一区二区三区蜜桃在线| 一区二区三区成人精品| 成人网页在线观看| 日韩精品首页| 国产色综合视频| 一区二区三区高清在线视频| 日本中文字幕不卡| 午夜视频在线| 五月天综合在线| 欧美婷婷精品激情| 噜噜噜在线视频| 国产精品久久久久久网站| 欧美一级手机免费观看片| 欧美白人做受xxxx视频| 国产成人午夜精品| 可以直接看的黄色网址| 精品黑人一区二区三区国语馆| 亚洲一区二区小说| 凹凸日日摸日日碰夜夜爽1| 午夜精品久久久久久久99水蜜桃| 上原亚衣av一区二区三区| 在线观看一区二区视频| 99久久精品国产一区二区小说| 黄色网址入口| 一本大道久久a久久综合婷婷| 国产精品久久久久久久久借妻| 一本一生久久a久久精品综合蜜| 91精品一区二区三区在线观看| 热99精品里视频精品| 亚州av乱码久久精品蜜桃| 亚洲狠狠爱一区二区三区| 国产资源在线播放| 国产裸体永久免费无遮挡| av资源一区| 91精品国产91久久久久久密臀| 国产成人福利夜色影视| 欧美日韩亚洲国产综合| 高潮按摩久久久久久av免费| 免费a漫导航| 国产精品男人爽免费视频1| 亚洲精品一区中文字幕乱码| 六九午夜精品视频| 国产a级片免费观看| 国产一区二区三区四区hd| 亚洲第一主播视频| 欧美亚洲精品一区| 欧美午夜精品免费| 国风产精品一区二区| 亚洲不卡在线视频| 中文字幕乱码无码人妻系列蜜桃| 天天天干夜夜夜操| 亚洲欧美乱综合图片区小说区| 欧美精品在线免费观看|