gpt4 book ai didi

sqlite - 需要使用 XOJO 更改存储在 SQLite 数据库中的图像压缩,但在处理过程中出错

转载 作者:行者123 更新时间:2023-12-03 15:08:30 26 4
gpt4 key购买 nike

我有一个存储说明书页面的表格。
在开发应用程序并添加完一本指导书时,我发现该表超过 200MB,但包含页面的 PDF 只有 70MB 438 页。

问题在于它将图像保存为最高质量。现在我想制作一个遍历每条记录的脚本,打开图像并将其再次保存为中等压缩。

我已经制作了一个记录集和一个循环来遍历每条记录以更改压缩率,但是应用程序在过程中途崩溃了。

无论我如何更改代码,它总是崩溃。

所以我采取了另一种方法并制作了一个包含 200 条记录的 for 循环。
这很顺利,但它没有改变数据库的文件大小???

运行时错误是 UnsupportedOperationException ,如此处所示:

Error I'm getting

这是代码:

  dim rs as RecordSet
rs=lego.LegoData.SQLSelect("SELECT * FROM Books")
dim resize as Picture
while not rs.EOF
resize = picture.FromData(rs.Field("intructions").StringValue)
rs.Edit
rs.Field("intructions").StringValue = resize.GetData(Picture.FormatJPEG, Picture.QualityMedium)
rs.Update
rs.MoveNext
wend

不知怎的,它读成了 NIL在 200 条记录之后,但不是 NIL .
错误不是每次都发生在同一条记录上,它有它自己的意志吗?

有什么建议么?我还想内置书籍图像压缩功能,以便人们可以使导出的手册更小。

最佳答案

  • 如果您删除或压缩其中的数据,数据库文件不会自动变小。您必须发出 VACCUM命令(例如使用 SQLExecute("VACUUM") )。您只能在提交后发出该命令,所以首先执行 SQLExecute("COMMIT") .或者使用 SQLite 工具(例如 SQLVue)手动完成。
  • 如果 resize.GetData返回 nil,这意味着它无法读取 JPEG 格式的数据。也许它不是 JPEG 数据,而是 GIF 或其他东西。尝试先将数据加载到字符串中,然后在调试器中查看它,使用二进制(十六进制字节) View 来查看它的情况。
  • 如果遇到异常,请将代码包装在 try 中阻止以防止应用停止,如下所示:
    try
    resize = picture.FromData(rs.Field("intructions").StringValue)
    catch exc as RuntimeException
    // The image could not be loaded - let's skip it
    rs.MoveNext
    continue
    end try
  • 关于sqlite - 需要使用 XOJO 更改存储在 SQLite 数据库中的图像压缩,但在处理过程中出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41922224/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com