文档章节

将图像转换为JPG或GIF字节流。

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:39
字数 619
阅读 6
收藏 0
点赞 0
评论 0

      其实这个东西真的没有什么可谈的,完全都是一堆API函数的调用,不过呢,隔那么一段时间就有人在那里问,而且一般也得不到正确的答案,因此,我还是画蛇添足,共享一下这些调用的苦力活吧。

      从我个人的理解来看,有这种需求的人无非可能想做两件事,第一种是想搞类似屏幕传输或远程控制方面的东西,这个至少占了90%以上,而可以明确的告诉这部分朋友,JPG流实现远程控制是条死路。第二种是想实现保存JPG图像是压缩质量的预览,这个我在示例代码中做了一个简单的工程,大家可以参考。

      很多朋友都会用GDI+的GdipSaveImageToFile函数将图像保存为JPG文件,要获得对应的JPG字节流,一些折中的办法就是保存为文件后再通过二进制读取他,这实在是个弯路,在GDI+中还有一个函数GdipSaveImageToStream可将图像数据直接压缩为你指定格式的流对象。

      使用VB6或者VC6的朋友常常在程序中使用的是一些GDI的对象,比如Hbitmap或者Stdpicture,为了能调用GDI+的相关函数,必须先将他们转换为GDI+可识别的对象,这些转换函数有很多,例如GdipCreateBitmapFromScan0、GdipCreateBitmapFromHBITMAP、GdipCreateBitmapFromGdiDib、GdipCreateBitmapFromResource、GdipCreateBitmapFromHICON等等。

      同GdipLoadImageFromFile一样,对应也有GdipLoadImageFromStream函数,将流对象转换为Bitmap。

      列举转换为JPG字节流的部分代码如下:

 1  Public  Function GetJpgArrayForm24Dib(Img  As StdPicture,  Optional Quality  As  Long =  80As  Byte()
 2      Dim Image                    As  Long
 3      Dim IIStream                 As IUnknown
 4      Dim uEncCLSID( 3)             As  Long
 5      Dim aEncParams()             As  Byte
 6      Dim uEncParams               As EncoderParameters
 7      Dim Data()               As  Byte
 8      Dim Memory                   As  Long
 9      Dim OldMemory                As  Long
10      Dim MemorySize               As  Long
11     GdipCreateBitmapFromHBITMAP Img.Handle,  0, Image
12     GetEncoderClsID  " Image/jpeg ", uEncCLSID
13     uEncParams.Count =  1
14      ReDim aEncParams( 1  To  Len(uEncParams))
15      With uEncParams.Parameter
16         .NumberOfValues =  1
17         .Type = [EncoderParameterValueTypeLong]
18          Call CLSIDFromString(StrPtr(EncoderQuality), .GUID( 0))
19          If Quality <  0  Then
20             Quality =  0
21          ElseIf Quality >  100  Then
22             Quality =  100
23          End  If
24         .Value = VarPtr(Quality)
25      End  With
26      Call CopyMemory(aEncParams( 1), uEncParams,  Len(uEncParams))
27     
28     CreateStreamOnHGlobal  01, IIStream
29     GdipSaveImageToStream Image, IIStream, uEncCLSID( 0&), aEncParams( 1)
30     GetHGlobalFromStream  ByVal ObjPtr(IIStream), Memory
31     MemorySize = GlobalSize(Memory)
32     OldMemory = GlobalLock(Memory)
33      ReDim Data( 0  To MemorySize -  1)
34     CopyMemory Data( 0),  ByVal OldMemory, MemorySize
35     GlobalUnlock Memory
36     GdipDisposeImage Image
37     GetJpgArrayForm24Dib = Data
38  End Function

 

示例工程下载地址:http://files.cnblogs.com/Imageshop/BmpToJpgStream.rar

界面预览:

 

 

 

本文转载自:http://www.cnblogs.com/Imageshop/archive/2012/02/09/2344405.html

共有 人打赏支持
abcijkxyz
粉丝 60
博文 6196
码字总数 1876
作品 0
深圳
项目经理
GraphicsMagick的命令概览

GraphicsMagick的命令概览 ---------------------------------------------------------------------------- [ convert | identify | mogrify | composite | montage | compare | display | ......

mycms2013
2015/12/04
231
0
Imagemagick的用法

转载自:http://cache.baidu.com/c?m=9d78d513d99d1af31fa7837e7c4d88354c03df30698c814c68d4e20ed33707001935a5ec30236013a5c46b1600b83959fd833c6670437eb8c18ece08cabae13532d27c23706bd6......

jackjie2010
2012/05/21
0
0
如何在Ubuntu 16.04中创建GIF动图

导读 FFmpeg 是一款开源的音、视转换器,使用 FFmpeg 我们可以非常容易地转换和录制音视频文件,而 ImageMagick 是一款用于创建、编辑和合并位图图像的一款开源软件。 大家经常在新浪微薄、Q...

linuxprobe16
2016/12/16
18
0
如何在线制作gif图片?

最近想做个gif在线制作的网站,所以研究下了imagemagick和graphicsmagick制作gif图片 站已经做出来了:有兴趣的朋友可以先看看 http://www.sosogif.com/makeonline.jsp 源码下载地址1:http:...

赤尔宝丁
2016/05/04
93
0
将 GIF 图像转换为用于终端的 ASCII 码文本图形 - GIF for CLI

GIF for CLI 是 Google 在 GIF 31 周年纪念日推出的一款开源工具,能够将 GIF、短视频或对 Tenor GIF API 的查询转换为动画 ASCII 艺术,这意味着每次登录到编程工作站时,GIF 都会以 ASCII ...

匿名
06/19
0
0
使用ImageMagick为你的网站减重(转)

图片在网站所占的比重越来越重。更好的优化图片可以提高网站速度。减少宽带流量。 ImageMagick 是一个用来创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜...

红薯
2010/03/25
5.7K
7
GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理

 GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图);  GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了大一统的地位...

凡尘里的一根葱
2015/10/01
604
0
【腾讯Bugly干货分享】WebP原理和Android支持现状介绍

本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/582939577ef9c5b708556b0d 1.背景 目前网络中图片仍然是占用流量较大的一部分,对于移动端更是...

腾讯Bugly
2016/11/14
308
0
开源图形库--CxImage

CxImage是一个可以用于MFC 的C++图像处理类库类,它可以打开,保存,显示,转换各种常见格式的图像文件,比如BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式的...

匿名
2009/08/21
18.2K
0
聊一聊几种常用web图片格式:gif、jpg、png、webp

前言 在大多数的web页面中,图片占到了页面大小的60%-70%。因此在web开发中,不同的场景使用合适的图片格式对web页面的性能和体验是很重要的。图片格式种类非常多,本文仅针对几种web应用中常...

antwang
06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
今天
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部