PL / SQL中的Oracle ORDImage处理:获取IMG-00710和ORA-01031

时间:2020-03-05 18:59:18  来源:igfitidea点击:

我已将图像加载到新的初始化的Oracle ORDImage对象中,并通过PL / SQL处理它。我可以读取其属性,但不能使用process()方法对其进行处理。

vLocalImage ORDImage := ORDImage.init();
...
vLocalImage.source.localdata := PORTAL.wwdoc_admin.get_document_blob_content(pFile);
vLocalImage.setProperties();
...
if vLocalImage.width > lMaxWidth
then
vLocalImage.process('maxScale 534 401');
end if;

这应按比例缩小图像,并保持宽高比,以使宽度不超过534像素,高度不超过401像素。

但是,我得到以下错误堆栈:

Internal error: ORA-29400: data cartridge error
IMG-00710: unable to write to destination image
ORA-01031: insufficient privileges

尝试其他操作(例如"旋转90")会产生相同的错误。

解决方案

回答

我们能否显示用于获取l_ordimage的select语句?导致此错误的主要原因似乎是如果select语句中没有" for update",但是目前我无法让中介进行测试。

回答

即使文档指出可以"就地"编辑ORDImage,也无法使它正常工作。

相反,我创建了一个新的ORDImage对象并使用了processCopy:

vNewImage ORDImage;
...
    vLocalImage.processCopy('maxScale 534 401', vNewImage);