使用 libjpeg 编写 jpeg(段错误)

2024-04-26

尝试使用 libjpeg 从一些原始数据写入 jpeg 文件。

它会触发分段错误jpeg_start_compress()

这是代码的相关部分:

void write_sub_image(char *filename, int start, int end)
{
    struct jpeg_compress_struct cinfo;
    unsigned char *stride;
    JSAMPROW row_pointer[1];
    unsigned long new_width = end-start;
    int i;
    FILE *fp;

    stride = (unsigned char *)malloc( new_width * 3);

    fp = fopen(filename, "w+");

    jpeg_create_compress(&cinfo);

    jpeg_stdio_dest(&cinfo, fp);

    cinfo.image_width = new_width;
    cinfo.image_height = height;
    cinfo.input_components = 3;
    cinfo.in_color_space = JCS_RGB;

    jpeg_set_defaults(&cinfo);

    jpeg_start_compress(&cinfo, FALSE);

    for (i=0; i<height; i++) {
        memcpy (stride, image + (start + i * width) * 3, new_width * 3);
        row_pointer[0] = stride;
        jpeg_write_scanlines(&cinfo, &stride, 1);
    }

    jpeg_finish_compress(&cinfo);
    jpeg_destroy_compress(&cinfo);

    fclose(fp);
}

问题不在于memcpy,它甚至没有进入for循环......只是在_start_compress处崩溃。

如果相关的话,系统是 Ubuntu 10.10。


您需要设置一个错误管理器:

struct jpeg_error_mgr jerr; 
....
cinfo.err = jpeg_std_error(&jerr); 
jpeg_set_defaults(&cinfo);
....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 libjpeg 编写 jpeg(段错误) 的相关文章

  • 如何让 CMake 为目标安装 PDB 文件

    如何让 CMake 安装调试 Visual Studio 生成的 DLL 文件和 EXE 文件所需的配套 PDB 文件 我已经挣扎了一段时间 试图找到这个问题的一个好的答案 我现在认为我找到了一个 使用安装文件命令
  • 改变 RGB 颜色的色调

    我正在尝试编写一个函数来改变 RGB 颜色的色调 具体来说 我在 iOS 应用程序中使用它 但数学是通用的 下图显示了 R G 和 B 值如何随色调变化 看起来 编写一个函数来改变色调似乎应该是一个相对简单的事情 而不需要对不同的颜色格式进
  • 单击按钮本地化应用程序

    我在我的项目 mainMaster 页面中找到了 imageButtons
  • 序列化 .NET WCF 服务的类型时出现问题:服务 WSDL 在 XSD 中定义空类型

    我正在使用 WCF 编写一个 Web 服务 我创建了数据合约 我创建了我的服务合同 界面 我定义了方法 其参数的类型与数据契约相同 我实现了创建服务类的服务合同 我使用 svc 文件和 IIS 托管我的服务 我尝试了我的服务 寻找http
  • 如何将文本框中删除的字符替换为0

    在winforms中 如何用零替换删除的字符 例如 文本框中为 12 45 如果我们删除小数点后 它应该变成12 00 同样的方法删除前面的000 45 默认值应为 000 00 Use a 蒙版文本框 http msdn microsof
  • C 中经过的时间

    include
  • 如何检测机器是否加入域?

    如何检测计算机是否已加入 Active Directory 域 相对于工作组模式 如果没有必要的话 不要用 pinvoke 来愚弄 参考System DirectoryServices 然后调用 System DirectoryServic
  • 弹出窗口或弹出窗口显示附加信息

    我想在我的应用程序顶部显示带有附加信息的弹出窗口 我的信息是Listview大约 500 个项目我都尝试过 有问题flyout gt 它里面可能有scrollViewer 所以我的列表视图不能正确虚拟化 其他一切都可以 有我的代码 Flyo
  • 如何在 Datagridview 中为图像列提供超链接

    如何在winforms中超链接到DataGridViewImageColumn OP 评论中的代码示例 DataGridView dgv new DataGridView dgv Name dgv i dgv DataSource dsMa
  • 如何存储将被多个不同类访问的字符串常量? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关于堆栈溢出有太多不同的答案 声明一个命名空间 并在 hpp 文件中将所有字符串标记为 extern const 并在 cpp 文件中放置它们的
  • 如果键不是映射中的初始化键,STL map[key] 返回什么? [复制]

    这个问题在这里已经有答案了 这是一些示例代码 include
  • 最佳实践:从属性中抛出异常

    什么时候适合从属性 getter 或 setter 中抛出异常 什么时候不合适呢 为什么 关于这个主题的外部文档的链接会很有帮助 谷歌搜索结果出奇的少 Microsoft 在以下位置提供了有关如何设计属性的建议 http msdn micr
  • 在 C 或 C++ 中使用逗号作为宏名称

    我想做这样的事情 define define MAX 10 000 000 undef 有什么技巧可以做到吗 编辑 我知道 C 14 中的数字分隔符 我正在寻找一种技巧来对不兼容的编译器执行相同的操作 EDIT2 请考虑Variadic M
  • 跟踪 pthread 调度

    我想做的是创建某种图表 详细说明 Linux 中 两个 线程的执行情况 我不需要查看线程的作用 只需查看它们何时被安排以及持续多长时间 基本上是一条时间线 在过去的几个小时里 我一直在互联网上搜索跟踪 pthread 调度的方法 不幸的是
  • 提取 zip 文件时 Parallel.ForEach 抛出异常

    我正在阅读 zip 文件的内容并尝试提取它们 var allZipEntries ZipFile Open zipFileFullPath ZipArchiveMode Read Entries 现在 如果我提取使用 Foreach 循环
  • 类型“MyApp”已包含“MystatusBar”的定义

    我的应用程序 XAML
  • 如何在 C# 中读取 Visio 文档内容

    我的DLL库代码如下 using System using IVisio Microsoft Office Interop Visio namespace Emix public class Visio protected String p
  • 使用 JSON.NET 反序列化一些 JSON

    我对 JSON 非常陌生 我需要解析 API 提供的一些内容 谷歌快速搜索出现了JSON NET http james newtonking com pages json net aspx 所以我现在尝试使用它将此 JSON 解析为列表对象
  • WCF - IsOneway 的行为不像 Oneway 操作

    我已在服务的某些方法上定义了 OneWay 属性 但它们的行为并不像 Oneway 调用 我的客户等待呼叫完成并从服务返回 我假设单向操作是非阻塞操作 并且客户端不关心被调用函数会发生什么 它只是调用并忘记它 这是对的吗 问题 调用 Ope
  • 如何包装实体框架以在执行前拦截 LINQ 表达式?

    我想在执行之前重写 LINQ 表达式的某些部分 我在将重写器注入正确的位置时遇到问题 实际上根本没有 查看实体框架源代码 在反射器中 它最终归结为IQueryProvider Execute在 EF 中 它通过以下方式耦合到表达式Objec

随机推荐