delphi image图片如何保存到access 的ole对象中

搬砖的码农 2014-11-19 05:30:03
delphi image控件显示图片,想将图片保存到access数据库中,本人access数据库中的数据类型是‘OLE 对象’

1、如何将image控件图片保存到access的OLE 对象中
2、如果不用OLE 对象对象,用什么数据类型保存(不要保存路径的形式)
...全文
407 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
搬砖的码农 2014-11-24
  • 打赏
  • 举报
回复
引用 1 楼 aniugee 的回复:

//保存图片

procedure TForm1.Button2Click(Sender: TObject);
var
  strm: TMemoryStream;
  myjpeg: TJPEGImage;
begin
  if (ExtName = '.jpg') or (ExtName = '.jpeg') or (ExtName = '.bmp') then
  begin
    adotable1.Edit;
    if (ExtName = '.jpg') or (ExtName = '.jpeg') then
    begin
      strm := TMemoryStream.Create;
      myjpeg := TJPEGImage.Create;
      myjpeg.Assign(image1.Picture.Graphic);
      myjpeg.SaveToStream(strm);
      strm.Position := 0;
      tblobfield(adotable1.FieldByName('img1')).LoadFromStream(strm);
      strm.Free;
    end;
    if ExtName = '.bmp' then
    begin
      strm := TMemoryStream.Create;
      image1.Picture.Bitmap.SaveToStream(strm);
      strm.Position := 0;
      tblobfield(adotable1.FieldByName('img1')).LoadFromStream(strm);
      strm.Free;
    end;
    adotable1.FieldByName('extm').Value := ExtName;
    adotable1.Post;
    ShowMessage('保存图片成功!');
  end
  else
    ShowMessage('保存图片失败!');
end;

//读取图像
procedure TForm1.Button3Click(Sender: TObject);
var
  buf: TMemoryStream;
begin
  if adotable1.FieldValues['img1'] <> 'NULL' then
  begin
    buf := TMemoryStream.Create;
    try
      buf.Position := 0;
      tblobfield(adotable1.FieldByName('img1')).SaveToStream(buf);
      buf.Position := 0;
      Image1.Picture.Graphic := nil;
      if (adotable1.FieldValues['extm'] = '.jpg') then
      begin
        Image1.Picture.Graphic := TJPEGImage.Create;
        Image1.Picture.Graphic.LoadFromStream(buf);
      end;
      if (adotable1.FieldValues['extm'] = '.jpeg') then
      begin
        Image1.Picture.Graphic := TJPEGImage.Create;
        Image1.Picture.Graphic.LoadFromStream(buf);
      end;
      if (adotable1.FieldValues['extm'] = '.bmp') then
      begin
        Image1.Picture.Bitmap := nil;
        Image1.Picture.Bitmap.LoadFromStream(buf);
      end;
      buf.Free;
    except
      ShowMessage('载入图片不成功,请检查图片类型');
    end;
  end;
  Image2.Picture := Image1.Picture;
end;
帮你搜到的,未测试
试了.bmp的,可以用,非常感谢
aniugee 2014-11-20
  • 打赏
  • 举报
回复

//保存图片

procedure TForm1.Button2Click(Sender: TObject);
var
  strm: TMemoryStream;
  myjpeg: TJPEGImage;
begin
  if (ExtName = '.jpg') or (ExtName = '.jpeg') or (ExtName = '.bmp') then
  begin
    adotable1.Edit;
    if (ExtName = '.jpg') or (ExtName = '.jpeg') then
    begin
      strm := TMemoryStream.Create;
      myjpeg := TJPEGImage.Create;
      myjpeg.Assign(image1.Picture.Graphic);
      myjpeg.SaveToStream(strm);
      strm.Position := 0;
      tblobfield(adotable1.FieldByName('img1')).LoadFromStream(strm);
      strm.Free;
    end;
    if ExtName = '.bmp' then
    begin
      strm := TMemoryStream.Create;
      image1.Picture.Bitmap.SaveToStream(strm);
      strm.Position := 0;
      tblobfield(adotable1.FieldByName('img1')).LoadFromStream(strm);
      strm.Free;
    end;
    adotable1.FieldByName('extm').Value := ExtName;
    adotable1.Post;
    ShowMessage('保存图片成功!');
  end
  else
    ShowMessage('保存图片失败!');
end;

//读取图像
procedure TForm1.Button3Click(Sender: TObject);
var
  buf: TMemoryStream;
begin
  if adotable1.FieldValues['img1'] <> 'NULL' then
  begin
    buf := TMemoryStream.Create;
    try
      buf.Position := 0;
      tblobfield(adotable1.FieldByName('img1')).SaveToStream(buf);
      buf.Position := 0;
      Image1.Picture.Graphic := nil;
      if (adotable1.FieldValues['extm'] = '.jpg') then
      begin
        Image1.Picture.Graphic := TJPEGImage.Create;
        Image1.Picture.Graphic.LoadFromStream(buf);
      end;
      if (adotable1.FieldValues['extm'] = '.jpeg') then
      begin
        Image1.Picture.Graphic := TJPEGImage.Create;
        Image1.Picture.Graphic.LoadFromStream(buf);
      end;
      if (adotable1.FieldValues['extm'] = '.bmp') then
      begin
        Image1.Picture.Bitmap := nil;
        Image1.Picture.Bitmap.LoadFromStream(buf);
      end;
      buf.Free;
    except
      ShowMessage('载入图片不成功,请检查图片类型');
    end;
  end;
  Image2.Picture := Image1.Picture;
end;
帮你搜到的,未测试
不需Excel也可讀寫xls檔的Delphi控件 用来读取Excel,Access的控件 读写任何单元值 数字型、字符型、布尔型以及错误型。但是你了解日期和时间型单元吗?在Excel没有这样的单元。Excel是和Delphi一样的方式来存储日期和时间的,即浮点型。那是什么制造了日期或时间值啦,是格式化。 完全支持公式。你可以使用和Excel一样的函数,也支持对外部工作簿引用的公式,你甚至可以从外部引用读取结果。 与操作Delphi的TStringGrid一样的方式操作单元格,或则通过给单元格命名,比如:”D7” 根据单元格的规则以字符串格式读取单元值 根据你的需求格式化单元 格式化很简单。通过获取单元格,你就可以操作单元的格式属性。例如:XLSReadWriteII.Sheet[n].Cell[Col,Row].FontSize := 12; 你也可以对域进行格式化,比如设置边框。 支持所有的Excel格式选项 合并单元格 操作所有的打印选项 选择页面大小,设置边距 设置标题和页脚,包括格式码。 定义打印区域 设置分页符 XLSReadWriteII完全支持Unicode 所有的字符型都是宽字符型。你完全不必担心非英语字符。 控件 你可以插入控件以及定义他们的源和目的单元 绘图 插入所有种类的绘图,从简单的线条到AutoShapes 多行文本和文本框 创建和编辑文本框以及多行文本 图表 创建和Excel一样选项的图表 复制/移动/删除 可以以Excel一样的行为复制、移动和删除单元 行列也可以像单元一样复制和移动 支持工作簿之间的复制和移动 可以复制整个工作簿 使用命名的域/单元 你可以在你想要的任何地方命名 通过命名访问单元格,例如:XLS.NameAsFloat['MyCell'] := 202.5; 支持指定、内置的名称 支持所有超链接类型 网页和E-mail地址 本地文件 服务器文件 工作薄引用 加密文档 你可以读写加密文件。条件是你需要知道文件的密码。 计算 可计算单元以及整个工作薄 计算引擎将依据单元进行计算。 可读取引用的外部工作薄。这通过一个特殊的快速查询程序进行执行 Rich Text单元 为了轻松地创建多字体格式的单元,单元可以以RTF格式读写 VBA宏 可以读写文件的宏,使用XLSReadWriteII可以为控件比如:按钮、组合框等添加宏 导入及导出 从下列导入数据… Open Office Calc文档 CSV文件以及其他可以自动识别分隔符、小数分隔符和文本引用字符的文本文件 HTML表格(标签) 数据库 导出数据为… CSV文件 HTML文件 其他 自动过滤 单元验证 有条件的格式 合并单元 PaintCell方法:将单元内容渲染到TCanvas对象的 XLSReadWriteII包还包含下列组件: 从任何数据库导入数据到工作薄 工作薄导出为HTML文件

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧