Imageen 图像切割 (JpegLosslessTrans)

 

procedure CutAFile(FileName: string; qry: TQuery);
var
  i: Cardinal;
  FromStream, ToStream: TMemoryStream;
  SubFileName, Path, fName, MainName, ExtName: string;
  NewFileName, Sub_PicName, TemplateName: string;
  r: TRect;
begin
  if Not FileExists(FileName) then Exit;

  ExtName := ExtractFileExt(FileName);
  fName := ExtractFileName(FileName);                               //提取文件名
  MainName := copy(fName, 1, length(fName) - Length(ExtName));
  TemplateName  := RightStr(MainName, 6);
  Path := ExtractFilepath(FileName) + TemplateName + '\';
  FromStream := TMemoryStream.Create;
  FromStream.LoadFromFile(FileName);
  ToStream := TMemoryStream.Create;

  i := 0; // 图像块号
  qry.First;

  while not qry.Eof do begin
    i := i + 1;
    NewFileName := MainName + Format('_%0.2d', [i]);
    Sub_PicName := NewFileName + ExtName;
    SubFileName := Path + format('%0.2d\', [i]) + Sub_PicName;

    with qry do begin
      r.Left   := FieldByName('selX1').AsInteger;
      r.Top    := FieldByName('selY1').AsInteger;
      r.Right  := FieldByName('selX2').AsInteger;
      r.Bottom := FieldByName('selY2').AsInteger;
      FromStream.Position := 0;
      ToStream.Position := 0;
      // JpegLosslessTransform(FileName,SubFileName,jtCut,False,jcCopyAll,r);
      JpegLosslessTransformStream(FromStream,ToStream,jtCut,False,jcCopyAll,r);
      ToStream.Position := 0;
      ToStream.SaveToFile(SubFileName);
      Next;
    end;
  end;

  FromStream.Free;
  ToStream.Free;
end;

转载于:https://my.oschina.net/u/582827/blog/643939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值