(DELPHI)已经存入SQLSERVER中的图片数据(image字段)太大,怎么直接在数据库中压缩?或怎么用程序实现

存数据的时候没有考虑大小限制,所有图片都是分辨率极高的,现实使用中不需要这么高分辨率的图片,怎么用最简单的方法压缩数据库里的图片信息。查了一些资料发现没有什么简单的方法只... 存数据的时候没有考虑大小限制,所有图片都是分辨率极高的,现实使用中不需要这么高分辨率的图片,怎么用最简单的方法压缩数据库里的图片信息。
查了一些资料 发现没有什么简单的方法 只能写程序取出来 再压缩像素 再存入数据库。

怎么压缩像素?
展开
 我来答
windblast
推荐于2017-11-02 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

delphi 的图像缩放示例代码如下:

//将图片缩放至指定大小
procedure SizeBmp(const Source, Dest: string; const x, y: integer);
var
  aBmp, bBmp: tbitmap;
  scalex, scaley: real;
begin
  aBmp := TBitmap.Create;
  bBmp := TBitmap.Create;
  try
    aBmp.LoadFromFile(Source);
    scaley := aBmp.Height / y;
    scalex := aBmp.Width / x;
    bBmp.Width := round(aBmp.Width / scalex);
    bBmp.Height := round(aBmp.Height / scaley);
    bBmp.PixelFormat := pfDevice;
    SetStretchBltMode(bBmp.Canvas.Handle, COLORONCOLOR);
    StretchBlt(bBmp.Canvas.Handle, 0, 0, bBmp.Width, bBmp.Height,
      aBmp.Canvas.Handle, 0, 0, aBmp.Width, aBmp.Height, srccopy);
    bBmp.SaveToFile(Dest);
  finally
    aBmp.Free;
    bBmp.Free;
  end;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  SizeBmp('e:\1112.bmp','e:\1112_small.bmp',640,480);
end;
Berlin66
2011-09-06 · TA获得超过176个赞
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:98.8万
展开全部
delphi里面有zlib这个单元,里面有压缩的函数TCompressionStream可以调用!参考下面的代码去处理吧!
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
//获得图像流的原始尺寸
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create(CompressionLevel, DestStream);
Try
CompressedStream.SaveToStream(SourceStream);
//将原始流进行压缩, DestStream中保存着压缩后的流
SourceStream.Free;
CompressedStream.Clear;
//写入原始流的尺寸
CompressedStream.WriteBuffer(Count, SizeOf(Count));
//写入经过压缩的流
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
众口说车
2011-09-06 · TA获得超过2323个赞
知道大有可为答主
回答量:3503
采纳率:50%
帮助的人:1499万
展开全部
DELPHI好像有个zip的第三方控件,你可以考虑把数据读出来,压缩后再存回去,然后,在需要使用的时候再把它解压。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暴念逆落墅兵4156
2011-09-06 · TA获得超过5.1万个赞
知道大有可为答主
回答量:3.5万
采纳率:0%
帮助的人:4636万
展开全部
fg
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fyg246
2011-09-06 · TA获得超过862个赞
知道小有建树答主
回答量:1296
采纳率:33%
帮助的人:380万
展开全部
没什么好办法,压缩好了再放进去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式