Tag: jpeg

移位负的有符号值是不确定的

我主演原始的JPEG标准( ITU 81 ),特别是图F.12:扩展V中解码值的符号位 : 作为参考, SLL术语表示: shift left logical operation (参见PDF的第15页) 现在着名的libjpeg实现决定以这种方式实现它(非常直接的转录): /* * Figure F.12: extend sign bit. * On some machines, a shift and add will be faster than a table lookup. */ #ifdef AVOID_TABLES #define HUFF_EXTEND(x,s) ((x) < (1<<((s)-1)) ? (x) + (((-1)<<(s)) + 1) : (x)) #else #define HUFF_EXTEND(x,s) ((x) […]

从C中的文件中提取jpeg文件

我试图从内存卡文件中提取jpeg文件。 程序将一次读取512字节块,如果块以JPEG识别字节开头,我的程序应该将这些字节写入输出文件。 它应该继续写入这些字节,直到它找到另一个JPEG识别字节序列,此时它应该停止写入.jpg文件并写入新文件。 每个文件应命名为00x.jpg,其中x是#。 我的程序编译但不生成所有jpeg。 应该有16个JPEG,但它只产生7个。 int main(void) { // open file for reading FILE* file = fopen(“card.raw”, “r”); // Open the file for reading // target file FILE* image; // buffer of bytes uint8_t buffer[512]; // check for NULL file if (file == NULL) { fclose(file); printf(“Could not open file”); return 1; } // […]

在Linux中读取USB网络摄像头的输出

我正在用C中的fread和fwrite进行一些实验。所以我用C编写了这个小程序来从网络摄像头获取数据并将其转储到文件中。 以下是来源: #include #include #define SIZE 307200 // number of pixels (640×480 for my webcam) int main() { FILE *camera, *grab; camera=fopen(“/dev/video0”, “rb”); grab=fopen(“grab.raw”, “wb”); float data[SIZE]; fread(data, sizeof(data[0]), SIZE, camera); fwrite(data, sizeof(data[0]), SIZE, grab); fclose(camera); fclose(grab); return 0; } 程序在编译时工作( gcc -o snap camera.c )。 令我惊讶的是输出文件不是原始数据转储而是JPEG文件。 在程序输出文件上输出linux上的file命令显示它是JPEG图像数据:JFIF Standard 1.01。 该文件在图像查看器上可见,尽管有点饱和。 这是怎么发生的? 我没有在源代码或程序中使用任何JPEG编码库。 相机是否原生输出JPEG? 网络摄像头是由Logitech制造的Sony […]

解码JPEG霍夫曼块(表)

以下块由Huffman块标记嵌套 -HUFF———————————————————————0084- 10 0 1 2 4 3 4 6 5 6 8 a 9 4 2 3 0 1 2 11 0 3 4 21 5 12 31 6 41 51 61 13 22 71 81 91 a1 14 32 b1 d1 f0 15 23 35 42 b2 c1 7 16 24 33 52 […]

如何在不使用库的情况下获取jpeg文件的宽度/高度?

首先我想说我多次尝试通过谷歌搜索找到答案,我发现很多结果但我不明白,因为我不知道读取二进制文件的想法,并将获得的值转换为可读的价值。 我尝试过做什么 unsigned char fbuff[16]; FILE *file; file = fopen(“C:\\loser.jpg”, “rb”); if(file != NULL){ fseek(file, 0, SEEK_SET); fread(fbuff, 1, 16, file); printf(“%d\n”, fbuff[1]); fclose(file); }else{ printf(“File does not exists.”); } 我想要一个简单的解释与示例显示,如何从其标头获取jpeg文件的宽度/高度,然后将该值转换为可读值。

用C / C ++读取图像文件

我需要用C / C ++读取一个图像文件。 如果有人可以为我发布代码,那将是非常好的。 我处理灰度图像,图像是JPEG。 我想把图像读成2D数组,这将使我的工作变得简单。

使用ijg支持JPEG – 获取访问冲突

我最近试图更新我的游戏以压缩格式(JPEG和PNG)存储图形。 虽然我最终选择了不同的库,但我最初的尝试是将ijg与JPEG解压缩结合起来。 但是,我甚至无法使最简单的控制台应用程序工作,我想知道是否有人可能能够阐明原因。 这是我的代码,它链接到作为ijg包的一部分的jpeg.lib : #include “stdafx.h” #include #include #include int _tmain(int argc, _TCHAR* argv[]) { struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; JSAMPARRAY buffer; int row_stride; //initialize error handling cinfo.err = jpeg_std_error(&jerr); //initialize the decompression jpeg_create_decompress(&cinfo); FILE* infile; errno_t err = fopen_s(&infile, “..\\Sample.jpg”, “rb”); assert(err == 0); //specify the input jpeg_stdio_src(&cinfo, infile); //read headers (void) […]

FFmpeg:Jpeg文件到AVFrame

我需要使用FFmpeg库将几个jpg文件加入到video中。 但是我在阅读这些文件时遇到了问题。 这是一个读取图像文件并生成AVFrame的函数: AVFrame* OpenImage(const char* imageFileName) { AVFormatContext *pFormatCtx; if(av_open_input_file(&pFormatCtx, imageFileName, NULL, 0, NULL)!=0) { printf(“Can’t open image file ‘%s’\n”, imageFileName); return NULL; } dump_format(pFormatCtx, 0, imageFileName, false); AVCodecContext *pCodecCtx; pCodecCtx = pFormatCtx->streams[0]->codec; pCodecCtx->width = W_VIDEO; pCodecCtx->height = H_VIDEO; pCodecCtx->pix_fmt = PIX_FMT_YUV420P; // Find the decoder for the video stream AVCodec *pCodec = avcodec_find_decoder(pCodecCtx->codec_id); […]

使用libjpeg-turbo的TurboJPEG的示例或教程

这里的libjpeg-turbo指令描述了TurboJPEG API:“这个API包装了libjpeg-turbo,并提供了一个易于使用的界面,用于压缩和解压缩内存中的JPEG图像”。 很好,但是有一些使用此API的可靠实例吗? 只是想在内存中解压一个相当香草的jpeg。 我找到了一些比如https://github.com/erlyvideo/jpeg/blob/master/c_src/jpeg.c ,它似乎使用的是TurboJPEG API,但还有更多可靠/多变的例子吗? libjpeg-turbo的来源已有详细记录,因此确实有帮助。