Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共15 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[求助]导出excxel时图片太大爆内存了,System.OutOfMemoryException

1楼
chen3728060 发表于:2016/4/28 22:14:00
我想问下,我有个图片列,当时FTP上传照片时都2m多一张,现在在excel报表的图片列里,用缩放提取图片,

[&照片,0,,100,-1]

照片是能显示,但是实际上我发现它没有压缩到100像素的,只是缩小到100像素而已,然后我1000多个产品,一共1000*2m的图片加载到内存生存excel报表,立刻就爆我内存

 

GDI+ 中发生一般性错误。
引发类型为“System.OutOfMemoryException”的异常。


我想问下,应该如何在导出前把图片压缩了,再导出(我不能去服务器里压缩原文件,我都是些珠宝图,压缩了将来就做不了海报了)?在什么事件里执行压缩放excel里好?有压缩的代码和帮助参考吗?

我的图片列名字就是“照片”,是用FTP存的,非二进制。谢谢

2楼
大红袍 发表于:2016/4/28 23:17:00

你的ftp服务器里面,应该单独用一个文件夹存放缩略图的吧?

 

生成缩略图也是很简单的,比如代码

 

Dim file As String = "d:\test.jpg"
Dim img As image = getImage(file)
Dim bmp  = new bitmap(img, 100, 100)
bmp.save("d:\缩略图.jpg")
bmp.Dispose

3楼
大红袍 发表于:2016/4/28 23:18:00

如果要等比缩放,这样

 

Dim file As String = "d:\test.jpg"
Dim img As image = getImage(file)
Dim bmp As new bitmap(img, 100, 100 * (img.height / img.width))
bmp.save("d:\缩略图.jpg")
bmp.Dispose

4楼
chen3728060 发表于:2016/4/29 8:40:00
我想问下,帮助文档里,哪里是写关于图像处理了?好像很分散
5楼
chen3728060 发表于:2016/4/29 8:42:00

我想是生成excel的时候,生成一个临时的缩略图,再放入excel。

还是老师您觉得,是上传图片时已经生成好缩略图,导出excel就直接获取更好?不过后者的方法,就规定了缩略图尺寸,不能每次生成时根据实际调整分辨率

6楼
Hyphen 发表于:2016/4/29 8:53:00
作为缩略图,一般尺寸都是固定的,看看一些看图软件的作法就知道了。

如果经常用大图的话,建议同时生成缩略图。

如果需要根据实际调整分辨率,那就在使用的时候再生成指定分辨率的图像好了
7楼
chen3728060 发表于:2016/4/29 9:16:00

我想问下关于图片处理(例如缩放、FTP上传下载)的帮助文档的链接是什么?我去学习一下

8楼
大红袍 发表于:2016/4/29 9:19:00
以下是引用chen3728060在2016/4/29 8:42:00的发言:

我想是生成excel的时候,生成一个临时的缩略图,再放入excel。

还是老师您觉得,是上传图片时已经生成好缩略图,导出excel就直接获取更好?不过后者的方法,就规定了缩略图尺寸,不能每次生成时根据实际调整分辨率

 

你的是ftp图片的话,处理就有些问题了,你要去编写报表事件,在细节去生成之前,下载文件,然后生成缩略图。

 

http://www.foxtable.com/help/topics/1955.htm

 

9楼
chen3728060 发表于:2016/4/29 9:20:00

我的流程,应该是

①准备生成报表细节时,出发builddetail事件

②在FTP服务器上读取这行对应的图片,生成缩略图

③下载缩略图到本地

④excel模板里设置为直接引用该图片

...下一行....

生成完毕,对吧?

[此贴子已经被作者于2016/4/29 9:21:55编辑过]
10楼
chen3728060 发表于:2016/4/29 9:27:00
应该是先FTP下载图片到本地,然后本地生成缩略图,然后excel在直接引用图片,是吧?
共15 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 2 queries.