﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-tbyxyz</title><link>http://www.cppblog.com/tbyxyz/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 11:54:24 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 11:54:24 GMT</pubDate><ttl>60</ttl><item><title>不错的C++图像库DevIL</title><link>http://www.cppblog.com/tbyxyz/archive/2008/01/15/devil.html</link><dc:creator>hosea</dc:creator><author>hosea</author><pubDate>Tue, 15 Jan 2008 09:17:00 GMT</pubDate><guid>http://www.cppblog.com/tbyxyz/archive/2008/01/15/devil.html</guid><wfw:comment>http://www.cppblog.com/tbyxyz/comments/41201.html</wfw:comment><comments>http://www.cppblog.com/tbyxyz/archive/2008/01/15/devil.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/tbyxyz/comments/commentRss/41201.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tbyxyz/services/trackbacks/41201.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span style="font-family: 宋体;">在使用</span><span lang="EN-US">CxImage</span><span style="font-family: 宋体;">显示</span><span lang="EN-US">gif</span><span style="font-family: 宋体;">文件时，发现</span><span lang="EN-US">CxImage</span><span style="font-family: 宋体;">解一个</span><span lang="EN-US">299</span><span style="font-family: 宋体;">帧的</span><span lang="EN-US">gif</span><span style="font-family: 宋体;">动画，在</span><span lang="EN-US">debug</span><span style="font-family: 宋体;">的时候花了好几时秒，</span><span lang="EN-US"><br>
CxImage</span><span style="font-family: 宋体;">在处理</span><span lang="EN-US">gif</span><span style="font-family: 宋体;">时效率太低了。</span><span lang="EN-US"><br>
</span><span style="font-family: 宋体;">在网上搜索了一些，支持比较强的图像库：</span><span lang="EN-US"><br>
imageMagick--</span><span style="font-family: 宋体;">非常强大，在</span><span lang="EN-US">MFC</span><span style="font-family: 宋体;">中不好用，要把图片显示到窗口非常麻烦，至少目前没有发现在</span><span lang="EN-US">Windows</span><span style="font-family: 宋体;">窗口中显示的方法，还得加一堆乱七八糟的</span><span lang="EN-US">dll</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">还是</span><span lang="EN-US">DevIL</span><span style="font-family: 宋体;">比较好使一点，感觉</span><span lang="EN-US">DevIL</span><span style="font-family: 宋体;">封装的不是很好，全局变量太多，多线程操作极不安全。用</span><span lang="EN-US">C++</span><span style="font-family: 宋体;">在封装一下，可能就好使一点。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">附：</span></p>
<p class="MsoNormal" style="margin-bottom: 12pt; text-align: left;" align="left"><span style="font-size: 18pt; font-family: verdana;" lang="EN-US">DevIL Feature
List</span><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
<table class="MsoNormalTable" style="width: 100%;" border="0" cellpadding="0" cellspacing="5" width="100%">
    <tbody>
        <tr>
            <td style="padding: 3.75pt;" valign="top">
            <p class="MsoNormal" style="text-align: left;" align="left"><strong><em><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Supports loading of:</span></em></strong><span style="font-size: 10pt; font-family: verdana;" lang="EN-US"> </span><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
            <ul type="disc">
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.bmp <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.cut <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.dcx <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.dds <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.ico <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.gif <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.jpg <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.lbm <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.lif <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.mdl <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.pcd <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.pcx <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.pic <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.png <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.pnm <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.psd <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.psp <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.raw <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.sgi <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.tga <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.tif <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.wal <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.act <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.pal <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.hdr <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Doom
                graphics <o:p></o:p></span></li>
            </ul>
            </td>
            <td style="padding: 3.75pt;" valign="top">
            <p class="MsoNormal" style="text-align: left;" align="left"><strong><em><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Supports saving of:</span></em></strong><span style="font-size: 10pt; font-family: verdana;" lang="EN-US"> </span><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
            <ul type="disc">
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.bmp <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.dds <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.jpg <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.pcx <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.png <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.pnm <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.raw <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.sgi <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.tga <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.tif <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.pal <o:p></o:p></span></li>
                <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">.hdr <o:p></o:p></span></li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><em><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Library Features</span></em></strong><span style="font-size: 10pt; font-family: verdana;" lang="EN-US"> </span><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
<ul type="disc">
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Portable,
    supports Windows, Mac OS X and *nix. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">OpenGL-style
    syntax. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Use of
    image names instead of ugly pointers. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Loading
    from files, file streams or memory "lumps". <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Direct
    access to data through ilGetData() and ilSetData(). <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Support
    for luminance, rgb(a), bgr(a) and colour-indexed images. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Support
    for 3 different numbers of bits per channel. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Conversion
    between all formats and datatypes (including palettes). <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">User-defined
    automatic conversions if desired when loading images. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Automatic
    conversion when saving images if needed. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Automatic
    conversion of colour-indexed images to truecolour images if desired. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Controllable
    compression when saving. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Maintains
    a state stack that can be pushed and popped. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Full
    support for 3d texture volumes (3d images). <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Validation
    of images. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Support
    for layers. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Support
    for mipmaps. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Support
    for animations. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">User-specified
    clear colour. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Can load
    a default image if loading fails. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">User-specified
    hints. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Use of
    key colours. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Support
    for overlaying an image on top of another. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Allows
    the user to specify their own loading and saving callbacks, even
    overriding the default ones. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Support
    for user-specified read and write functions. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><st1:place w:st="on"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Delphi</span></st1:place><span style="font-size: 10pt; font-family: verdana;" lang="EN-US"> support. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Visual
    Basic support. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Linux
    support. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Can pick
    and choose which features will be used to create smaller dlls. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Choose
    whether to use the Intel Jpeg Library or libjpeg. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">A whole
    host of effects and filters to apply to images, such as embossing and edge
    detection. <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">Images
    can be resized or even be put on a larger background (enlarged canvas). <o:p></o:p></span></li>
    <li class="MsoNormal" style="text-align: left;"><span style="font-size: 10pt; font-family: verdana;" lang="EN-US">OpenGL,
    Allegro, Windows GDI and DirectX API support. <o:p></o:p></span></li>
</ul>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<br><img src ="http://www.cppblog.com/tbyxyz/aggbug/41201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tbyxyz/" target="_blank">hosea</a> 2008-01-15 17:17 <a href="http://www.cppblog.com/tbyxyz/archive/2008/01/15/devil.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>