送个小东西给大家(portletbridge + seam + groovy )公文交换

其实这两天写的差不多了。基本上能用了。

看到很多兄弟问问题,基本上是我以前也碰到的。

特点:

上传文件后使用OO(OpenOffice)将文件转化为html(包括图片的处理),方便预览。

如果安装clamav,antivir,可上传杀毒。

识别文件标题、文号等,自动填入表单。

虽然实现了文件审核,不过没用工作流,当前复杂的审核环境下,用工作流的确有点困难。

希望多批评。

 

运行环境:

ubuntu 9.04

DB2

jboss-portal 2.7.2

ibm-jdk-1.5.0

 

这个结构的好处是:

1、将大的项目分开为一个个的portlet,在portal中处理更方便。

2、groovy开发起来真的很快。上手也很快。

3、用maven管理项目还是觉得挺不错的。虽然我都不太懂maven。

4、jboss的sso解决方案,可以更加灵活的整合以前的资源。

 

不足:使用portal的数据库最好是xa的。如果不用xa的处理portal的用户操作很麻烦。

我的环境是XA的数据源。

 

openoffice的服务器启动方式如下:

soffice -headless -server -accept="socket,host=127.0.0.1,port=8100;urp;"

 

这个项目里面配置了包括famingo(flex,javafx)项目的运行环境。不过觉得flex在portal里面的应用范围不大。主要是sso的问题。

 

附件注:

已上传的文件:

是公文交换主要的部分。
是很多portlet公用的部分,我是linux开发环境,开发的时候都是ln -s 到主项目中的。经常修改,打包太麻烦。
common.tar.bz2 解开后可直接复制到 DocExchange.tar.bz2 对应的目录即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的实现seam carving算法的示例代码(使用Python和NumPy库): ```python import numpy as np import cv2 def energy(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3) sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3) energy = np.sqrt(sobelx**2 + sobely**2) return energy def find_seam(energy): rows, cols = energy.shape seam = np.zeros((rows,), dtype=np.int64) seam_energy = np.zeros((rows, cols), dtype=np.float64) seam_energy[0] = energy[0] for i in range(1, rows): for j in range(cols): if j == 0: seam_energy[i, j] = energy[i, j] + min(seam_energy[i-1, j], seam_energy[i-1, j+1]) elif j == cols-1: seam_energy[i, j] = energy[i, j] + min(seam_energy[i-1, j-1], seam_energy[i-1, j]) else: seam_energy[i, j] = energy[i, j] + min(seam_energy[i-1, j-1], seam_energy[i-1, j], seam_energy[i-1, j+1]) min_energy = np.min(seam_energy[-1]) seam[-1] = np.argmin(seam_energy[-1]) for i in range(rows-2, -1, -1): if seam[i+1] == 0: seam[i] = np.argmin(seam_energy[i, :2]) elif seam[i+1] == cols-1: seam[i] = np.argmin(seam_energy[i, -2:]) + cols-2 else: seam[i] = np.argmin(seam_energy[i, seam[i+1]-1:seam[i+1]+2]) + seam[i+1] - 1 return seam def remove_seam(img, seam): rows, cols, _ = img.shape new_img = np.zeros((rows, cols-1, 3), dtype=np.uint8) for i in range(rows): new_img[i] = np.delete(img[i], seam[i], 0) return new_img def seam_carving(img, num_seams): for _ in range(num_seams): energy_map = energy(img) seam = find_seam(energy_map) img = remove_seam(img, seam) return img # 示例用法 image_path = 'input.jpg' output_path = 'output.jpg' img = cv2.imread(image_path) resized_img = seam_carving(img, 50) # 将图像宽度减少50像素 cv2.imwrite(output_path, resized_img) ``` 这是一个基本的seam carving算法的实现,它通过计算能量图和找到最小能量路径来实现图像的缩小。请注意,该示例代码仅适用于RGB图像。如果要处理灰度图像或其他图像类型,可能需要进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值