内存jpeg文件读取程序

使用VS2015编译OSG3.6.3时的问题 刚才编了一下OpenSceneGraph 3.6.3 编译没遇到什么大问题,编完发现三个东西没编成功 plugins freetype 和plugins jpeg的: 错误LNK2019无法解析的外部符号 __imp_sprintf 无法解析的外部符号 __imp___iob_func 无法解析的外部符号 __imp_sscanf 无法解析的外部符号 __imp_fpr... 阅读详情

本人项目中只需要读,因此没有提供写jpeg的代码。

有C的习惯用法,c++ hard core可能不习惯,欢迎修改。

提到的引擎,要找原始的代码,应可以找到。

主要代码

头文件:jpegReader.h 

 

#define SIG_BYTES_OFFSET  6
#define HEADER_BYTES_TO_CHECK  4

//TODO:

//参考tge/../gBitmap.cc/GBitmap::allocateBitmap封装内存分配部分代码,并按osg2.2/.../Image.cpp/setImage封装设置MstBitmap的函数。

struct MstBitmap

{

     unsigned int width;

     unsigned int height;

     unsigned int pixelFormat;

     unsigned int internalFormat;

     unsigned int dataType;

     unsigned char *data;

};

源文件:jpegReader.cpp

 #include "jpegReader.h"

 #include <assert.h>

#include <GL/gl.h>

 extern "C"

{

     #include "jpeglib.h"

}

//参考ReaderWriterJPEG.cpp (osg2.2/.../jpeg)、bitmapPng.cc (tge/engine/dgl)完成。
//对libjpeg库的修改参考《libjpeg实现内存内位图的压缩及解压缩.mht》一文。不贴了。
MstBitmap * JpegReader::readJpegStream(void* stream,int size)

{

     assert( size != 0);

     assert(NULL != stream);

 

     //检测是否jpeg格式

     char sig[HEADER_BYTES_TO_CHECK];

     strncpy(sig,(char*) stream + SIG_BYTES_OFFSET, HEADER_BYTES_TO_CHECK);

     if( !strcmp(sig, "JFIF") )

         return NULL;

 

    struct jpeg_decompress_struct cinfo;

    jpeg_error_mgr jerr;

 

     int width;

    int height;

    int format ;

     int rowBytes;

 

     unsigned char *data;//解压后数据的指针

 

    cinfo.err = jpeg_std_error(&jerr);   

 

    jpeg_create_decompress(&cinfo);   

 

    //指定数据源

     jpeg_stdio_src(&cinfo,(char*)stream, size);

 

    jpeg_read_header(&cinfo, TRUE);

 

     switch (cinfo.out_color_space)

     {

         case JCS_GRAYSCALE: 

              format = 1; break;

         case JCS_RGB:

              format = 3; break;

         default:

              jpeg_destroy_decompress(&cinfo);

              return NULL;

     }

 

    jpeg_start_decompress(&cinfo);

 

    width = cinfo.output_width;

    height = cinfo.output_height;

     rowBytes = cinfo.output_width * cinfo.output_components;

  

    data = new unsigned char[rowBytes * height];

 

    //创建每一行数据的指针

    unsigned char** row_p = new unsigned char*[height];

    for (int i = 0; i < height; i++)

        row_p[i] = &data[rowBytes*i];

 

    //读取像素数据

     for (unsigned int i = 0; i < height; i++)

       jpeg_read_scanlines(&cinfo,&row_p[i], 1);

 

    delete[] row_p;

 

     jpeg_finish_decompress(&cinfo);

 

   // Release JPEG decompression object

   // This is an important step since it will release a good deal of memory.

     jpeg_destroy_decompress(&cinfo);

 

     unsigned int internalFormat =

         format == 1 ? GL_LUMINANCE :

         format == 2 ? GL_LUMINANCE_ALPHA :

         format == 3 ? GL_RGB :

         format == 4 ? GL_RGBA : (GLenum)-1;

 

     unsigned int pixelFormat =

         format == 1 ? GL_LUMINANCE :

         format == 2 ? GL_LUMINANCE_ALPHA :

         format == 3 ? GL_RGB :

         format == 4 ? GL_RGBA : (GLenum)-1;

 

     unsigned int dataType = GL_UNSIGNED_BYTE;

 

     MstBitmap *pbi = (MstBitmap*)malloc(sizeof(MstBitmap));

 

     if(NULL != pbi)

     {

         pbi->width   = width;

         pbi->height   = height;

         pbi->pixelFormat = pixelFormat;

         pbi->internalFormat = internalFormat;

         pbi->dataType = dataType;

         pbi->data = data;

     }

    return pbi;

}

btw:

(csdn编辑系统貌似比较烂,所见非所得,反复弄几次,

也就这种乱七八糟的样子,有合适的就换)

libjpeg-turbo测试解压缩性能 许久以前的代码,随便记录一下 #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <unistd.h> #include <sys/stat.h> #include <turbojpeg.h> typedef unsigned char uchar; typedef struct tjp_info { int outwidth; in. 阅读详情

相关推荐

yuv转jpg源码 带jpeg库 c语言

此软件主要将YUV420视频流转码成单帧jpg图片,运行环境为LINUX。所有需要用到的库都以静态库方式存在于lib路径下。具体编译和使用参见readme.txt

利用c 原生头文件完成JPEG全流程编码

骄傲一下,经过一个多月的努力,终于完成jpeg的全套编码。经验证此程序可以把摄像头yuv信号转为JPG图片。现在的程序还不完美,只能对长和宽尺寸是16倍数的信号转码。而且转码速度太慢,一帧1280×720的图片要2秒多。

m0_59802969的博客 731

解析读取jpeg2000图片

打包jai-imageio-jpeg2000代码,解析jpeg2000格式图片

使用libjpeg库读取JPEG图像数据

jpeg是一个国际图像压缩标准,图像的后缀一般为jpeg或者jpg。这种图片格式非常常见,还是有必要知道怎样将数据读取出来的。在我做的zMatrix库里,之前一直使用openCV的函数imread()读取图像,不是很方便,查过很多资料后发现,如果自己从零写一个读取jpeg的程序非常麻烦(可能水平不够吧,可以查一下都是需要什么算法),需要用到一些比较复杂的压缩算法,又因为读取图像不是重点,所以可以使用

幻世 1万+

riscv32-gcc工具链实战:从下载到编译的完整指南

本文提供了一份详尽的riscv32-gcc工具链实战指南,涵盖从官方渠道下载预编译版本、正确选择riscv32-glibc版本、配置环境变量到实战编译的全过程。通过清晰的步骤和避坑指南,帮助开发者快速搭建稳定的RISC-V交叉编译环境,并成功编译从Hello World到Linux内核的程序。

s3t4u的博客 675

LightGBM学习笔记

LightGB学习笔记1. lightgbm概述1.1 lightgbm介绍1.2 lightgbm和xgboost对比2 .直方图算法及改进2.1 直方图算法2.2 直方图算法改进2.2.1 GOSS算法3.树的生长策略4.系统设计5. 实战 lightgbm是基于boosting的学习框架,使用的是基于决策树的学习算法,具有更快的训练速度、更低的内存使用、更高的正确率、并且能够支持并行化学习,可以用来处理大规模数据,本文主要是针对学习视频https://www.bilibili.com/video/BV

一一xi的博客 3304

c语言读取jpg字节,我要用C语言调用输出一个jpg格式的图片,那位大师写个源程序给我看看,不胜感激啊...

程序返回内存设备的对象,pDC是设备兼容的对象(CreateCompatibleDC(pDC);需要这个参数)pwidth用于接收图片的实际宽度,pheight接收高对于返回的CDC使用bitblt来绘制,本代码是用MFC写的,如果你懂MFC那最好,注意使用完记得调用FreeBmp释放内存代码这么多其实主要是考虑到错误处理,真正操作图片的代码就不多,就是读取文件数据然后调用CreateDIBitm...

weixin_30045597的博客 758

VisionMaster Qt二次开发:图像获取、COM组件渲染与本地化存储实战

本文详细介绍了基于VisionMaster进行Qt二次开发的核心实战流程,涵盖环境搭建、方案加载、图像数据获取、COM组件渲染与本地化存储。重点解析了如何通过COM组件在Qt界面中实时显示图像,以及将VM图像数据转换为QImage并保存为本地文件的关键步骤与常见问题,为工业视觉项目开发提供稳定高效的解决方案。

weixin_29229261的博客 205

使用libjpeg进行JPEG图像解码

 如题:如何对test.jpg进行解码? 注:这里使用libjpeg库进行图像解码。也可以不使用libjpeg库,但是比较繁琐。 直接上代码: #include "jpeglib.h" #include #include #include int main() { FILE *input_file; input_file=fopen(

lushoumin的博客 8673

基于 Simulink 的三相四线制整流器在三相不平衡负载下的中点电位平衡控制实战教程

本文为三相四线制整流器在中点电位不平衡时的Simulink仿真教程。首先分析中点电位漂移的电荷不平衡机理,提出零序电压注入控制策略。详细演示建模步骤:搭建三相四线制主电路,构建中点平衡控制算法(含MATLAB函数代码),实现控制信号叠加与PWM生成。通过对比仿真验证控制效果,并给出零序电压限幅、中性线电感影响等工程建议。该方案能有效抑制三相不平衡负载下的中点电位波动,保证系统稳定运行。

xiaoheshang_123的博客 50

python实现序列比对之Needleman-wunsch算法 (附完整源码)

python实现序列比对之Needleman-wunsch算法 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 460

调用jpeg在gec6818上显示jpg

表示当前扫描行所占的内存空间大小,也就是当前行像素数据在LCD屏幕显存中的起始地址与上一行像素数据在LCD屏幕显存中的起始地址之间的偏移量。由于每个像素所占的空间大小为4个字节,因此。所指向的内存地址中的值。将其与上一步计算得到的偏移量相加,就可以得到该行像素数据在LCD屏幕显存中对应的内存地址。表示像素数据的宽度(以字节为单位),而不是像素数目。表示的是该指针所指向的内存地址的值,所以需要加上括号保证运算优先级正确。最终的结果是一个指向相应像素数据的指针。的结果是一个整数类型的偏移量值。

qq_51519091的博客 541

淘宝滑块验证码破解:Python模拟鼠标轨迹过关详解

本文全面解析了淘宝滑块验证码的破解流程,从机制分析、图像处理、轨迹模拟到自动化实现,提供了完整的Python解决方案。随着2026年风控技术的升级,单纯依靠轨迹模拟已经难以达到高通过率,未来趋势是结合强化学习生成更自然的轨迹,并利用深度神经网络进行端到端的验证码绕过。此外,各大平台正逐步推广"无感验证"和"行为式验证码",将验证融入到用户正常操作中,这对爬虫技术提出了更高的挑战。技术本身是中立的,关键在于使用者的目的。希望本文能帮助开发者更好地理解验证码对抗技术,从而设计出更安全的防御系统。

2201_76125261的博客 96

libjpeg测试程序

#include #include #include #include #include #include #include #include #include #define FB_DEV "/dev/fb0" /***************** function declaration ******************/ void usage(ch

wxh525123的专栏 1078

MTK 平台功耗优化策略全解析:Clock 管控、GPU 同步与 Preview 降帧实战方案

在中高端移动终端影像系统中,Camera 模块已成为功耗的关键来源之一,尤其是在高帧率拍摄、AI 模式实时预览等场景下,ISP、Sensor、GPU 与 SoC 时钟频率的大幅提升极易引发系统发热与续航瓶颈。MTK 平台基于多级功耗控制机制,构建了包括 Clock Gate 管理、GPU 时序协同、预览流降帧、Pipeline 低功耗切换等在内的影像功耗优化策略。本文聚焦于 MTK Camera 系统中的核心功耗控制点,基于实际项目部署案例,系统拆解其在不同模式下的节能路径设计与调试方法,为终端厂商与影像系

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2524

061、LQR(线性二次型调节器)控制基础

本文介绍了LQR(线性二次型调节器)控制在飞控系统中的应用。作者通过一次四旋翼炸机事故引出PID控制的局限性,详细讲解了LQR的数学原理、权重矩阵的物理意义以及实际工程实现方法。文章对比了LQR与PID的控制效果,指出LQR在鲁棒性方面的优势,同时也分析了其存在稳态误差等缺点。最后总结了LQR在飞控中的适用场景,建议将LQR与PID结合使用,并预告了下一章将讨论带积分项的LQI控制。全文包含具体案例、代码实现和调参经验,为飞控算法开发者提供了实用指导。

2401_88858637的博客 720

从C开始

学习和研究计算机科学,尤其是在windows的环境下学习和研究计算机科学,永远也绕不过去的两道坎就是C和C++;       C和C++是一种知识和这种知识的延伸。所以,从C开始------没错;         基于以前在C#下的编程经验,捡起C语言开始并不困难,快速的浏览了编程语言的通有的一些知识,数据类型、运算符、表达式、语句、循环、分支、跳转、输入输出等。函数隔

supnumb的专栏 750

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

嵌入式 精确获取文件的大小

int main(int argc, char * argv[]) {  FILE *fp;  int buf_size = 0;  if(argc  {   printf("%s %d The num of param is Two !\n",__FUNCTION__,__LINE__);   return -1;  }  char *jpg_buffer = NULL;

skdkjxy的专栏 820

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

linux下运行libjpeg库显示jpg格式图片

【代码】linux下运行libjpeg库显示jpg格式图片。

Theworldfocuses的博客 476

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java合成tif图片_C# 将图片合成tif文件

【实例简介】【实例截图】【核心代码】using BitMiracle.LibTiff.Classic;using System.Drawing;using System.Drawing.Imaging;using System.IO;using NPOI.SS.Util;namespace ConsoleApplication2{class Program{//C:\Users\Administr...

weixin_39910043的博客 248

Opencl 图像处理

上述代码中,我们首先使用libjpeg库读取JPEG图像数据,并将其存储在一个unsigned char类型的数组中。然后,我们使用OpenCL对图像进行处理,最后将处理后的图像数据保存为JPEG格式。在OpenCL部分,我们首先初始化OpenCL环境,然后加载OpenCL内核代码,创建OpenCL内存对象,并将JPEG图像数据复制到OpenCL内存对象中。最后,我们启动内核函数,从OpenCL内存对象中读取处理后的图像数据,并将其保存为JPEG格式。在程序结束时,我们释放OpenCL资源和内存。

qq_40553788的博客 737

IMX6学习记录(20)-移植jpeglib

上面是我创建的群聊,欢迎新朋友的加入。 1.准备 下载源码:http://www.ijg.org/ 2.编译 ./configure --prefix=/home/jun/i.mx6/code/16_jpeglib/jpeg-9c --host=arm-linux CC=arm-linux-gnueabihf-gcc 参数说明: –prefix 指定安装目录,如...

Jun626的博客 444

Linux 开发板 lcd显示jpg,gif

一帧帧的静态jpg图片进行延时显示。

weixin_53087423的博客 1190

mfc- Picture control显示图片

一、放一个Pictrue控件属性Type设为Owner Draw 调整大小 二、加一个按钮控件用于处理图片加载,添加事件 三、按钮单击事件  char* m_JPGBuf ;  int m_JPGLen;//头文件中定义 void Cbmlb::OnBnClickedBtnUplogpic() {  CString PicPath;  CFileDialog fdlg(TRUE,

wny198816的专栏 5247

将图片的二进制字节 在HTML页面中显示

两种方法: 后端的一般处理程序:Imge.ashx 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI.WebControls; 6 7 namespace Test 8 { ...

weixin_33700350的博客 1389

MFC显示JPG、JIF图片

注:此代码不存在内存泄露,很好的代码控件ID: picture控件:IDC_STATIC_IMG 路径编辑框:IDC_TXT_PATH界面如下图所示://************************************ // 方法说明: 显示JPG和GIF、BMP图片 // 参数说明: CDC * pDC 设备环境对象 // 参数说

GoJawee的博客 759
下一篇: 内存png读取程序
mipmap
博客等级 码龄19年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值