Jpeglib开发笔记(二):JpegLib编译(ubutnu)和Demo

简介: Jpeglib开发笔记(二):JpegLib编译(ubutnu)和Demo

Qt开发专栏:三方库开发技术(点击传送门)

上一篇:《Jpeglib开发笔记(一):JpegLib库介绍、windows编译和Demo

下一篇:敬请期待...

 

前言

前篇编译了windows上的,现编译ubuntu上的。

 

JpegLib下载地址

      https://www.ijg.org/

      点击对应文件即可下载,如下图:

(与windows下载的文件不同,windows是zip)

QQ群:1047134658(点击“文件”搜索“jpeg”,群内与博文同步更新)

 

JepgLib编译

步骤一:下载放到ubuntu编译文件件

步骤二:配置

./configure --prefix /home/yang/compile/jpeg/jpeg-9c/install

步骤三:make

步骤四:make install

 

Demo

解码测试运行成功,如下图:

在Qt项目中配置链接库的路径,添加环境变量LD_LIBRARY_PATH(不然会报错,找不到链接库),如下图:

测试代码

#include "JpegManager.h"
#include <QDebug>
JpegManager::JpegManager(QObject *parent)
    : QObject(parent)
{
}
void JpegManager::testDemo1(QString path)
{
    FILE *file;
    int width;
    int height;
    struct jpeg_decompress_struct jDecompressStruct;
    struct jpeg_error_mgr jErrorMgr;
    if ((file = fopen(path.toUtf8().data(), "rb")) == 0)
    {
      qDebug() << __FILE__ << __LINE__ << "Failed to open file:" << path;
      return;
    }
    // 初始化并申请解码器
    jDecompressStruct.err = jpeg_std_error(&jErrorMgr);
    jpeg_create_decompress(&jDecompressStruct);
    // 指定图片文件信息
    jpeg_stdio_src(&jDecompressStruct, file);
    // 读取头部信息
    jpeg_read_header(&jDecompressStruct, TRUE);
    // 开始解码
    jpeg_start_decompress(&jDecompressStruct);
    // 获取图片宽高
    width = jDecompressStruct.image_width;
    height = jDecompressStruct.image_height;
    qDebug() << __FILE__ << __LINE__ << "decompress file:" << path << width << "x" << height;
    printf("decompress file:%s, %d x %d\n", path.toUtf8().data(), width, height);
    // 释放解码器对象
    jpeg_destroy_decompress(&jDecompressStruct);
    fclose(file);
}

 



相关文章
|
存储 开发者
国标GB28181协议客户端开发(二)程序架构和注册
国标GB28181协议客户端开发(二)程序架构和注册
1094 0
|
SQL 前端开发 搜索推荐
【Element-UI】实现动态树、数据表格及分页效果
在现代软件开发中,动态树、数据表格以及分页效果成为了许多应用的核心需求。随着业务规模和复杂性的增加,我们往往需要展示大量的层级结构数据,并且实现交互性强且高效的操作。 动态树提供了一种组织结构清晰、可伸缩的展示方式,使用户可以方便地查看和操作树节点。数据表格则是以表格形式呈现数据,在其中用户可以进行排序、筛选、编辑等操作。 而分页效果则能够将大量数据分割成易于管理和浏览的一页或一页的内容。这三种功能的结合,不仅使得我们能够更好地处理庞大的数据集合,同时也使得用户能够快速定位所需信息。 本文将介绍如何使用现代前端技术实现动态树、数据表格及分页
|
缓存
npm install 一直卡着不动如何解决
npm install 一直卡着不动如何解决
7182 0
|
12月前
|
人工智能
新手必看,写歌词的技巧和方法新分享,妙笔生词AI智能写歌词软件
对于新手,写歌词不再难。本文分享了写歌词的实用技巧,如积累生活素材、明确主题、合理安排主副歌、简洁有力的语言表达等。推荐使用“妙笔生词智能写歌词软件”,其AI功能可助你灵感不断,轻松创作。
|
搜索推荐 安全 数据挖掘
如何利用商品详情数据挖掘消费者的潜在需求?
本文介绍了利用商品详情数据挖掘消费者潜在需求的六种方法,包括分析商品属性信息、研究消费者评价反馈、关注搜索浏览行为、对比竞争对手数据、分析购买行为及利用数据挖掘技术进行综合分析,旨在帮助企业精准捕捉市场需求,优化产品和服务。
|
Java 数据库 Android开发
使用Hilt完成依赖注入,让你的安卓代码层次有几层楼那么高(三)
使用Hilt完成依赖注入,让你的安卓代码层次有几层楼那么高(三)
331 0
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇--游戏生成技术
游戏生成技术,特别是生成式人工智能(Generative Artificial Intelligence, 简称Generative AI),正逐步革新游戏开发的多个层面,从内容创作到体验设计。这些技术主要利用机器学习、深度学习以及程序化内容生成(Procedural Content Generation, PCG)来自动创造游戏内的各种元素,显著提高了开发效率、丰富了游戏内容并增强了玩家体验。以下是生成式AI在游戏开发中的几个关键应用场景概述
360 2
|
算法 安全 Android开发
新一代安卓系统:技术演进与用户体验革新
在移动操作系统领域,安卓系统一直处于不断演进的过程中。本文探讨了新一代安卓系统的技术创新,以及这些创新如何为用户带来全新的体验和功能。
360 0
|
JSON Ubuntu Linux
Docker:镜像加速器
Docker:镜像加速器
21619 4
Docker:镜像加速器
|
编解码 监控 前端开发
GB/T28181-2016传输要求和Android平台设备接入技术实现
GB/T28181-2016公共安全视频监控联网系统 信息传输、交换、控制技术要求相关的传输要求如下:
394 1