• ImageMagick 笔记: 索引颜色(index color)、锁定图层,透明 png 转 gif (保持清晰度)


    今天在处理一张 png 透明背景的图片,大小: 16KB, 尺寸: 400 x 300,用到一段代码,也许对以后有用。

    /** 带透明背景和阴影的png图片, 转换成 gif, [索引色] + [锁住背景], 保持图片效果最佳的转换,并且生成的gif文件较小: **/

    //将透明背景png 转换成 透明背景gif
    PixelWand *pw = NewPixelWand();
    PixelSetColor(pw, "none"); //设置颜色
    MagickSetImageBackgroundColor(mw_source, pw);
    MagickSetImageAlphaChannel(mw_source,FlattenAlphaChannel);
    MagickSetImageType(mw_source, TrueColorMatteType); //[索引色] + [背景加锁]

    MagickWriteImage_gbk(mw_source, "c:\1.gif");

    将 400 x 300 的图片(mw) 放到 600 x 400 的透明画布(mw_canvas)上,并且要求生成的 png 文件较小:

    .... //mw 缩放代码省略

    //在 MagickCompositeImage() 前, 先设置 MagickSetImageType()

    MagickSetImageType(mw, PaletteMatteType); 

    //合成图片, 图片居中显示

    MagickCompositeImage(mw_canvas, mw, OverCompositeOp, (width - newWidth) / 2, (height - newHeight) / 2); 

     // MagickCompositeImage() 后, 再设置 MagickSetImageType()

    MagickSetImageType(mw_canvas, PaletteMatteType); 

    MagickWriteImage_gbk(mw_canvas, "c:\2.png"); //这样保存的png文件就会很小 (索引颜色 + 锁定图层)

  • 相关阅读:
    C++中的private/protected/public
    volatile关键字和mutable关键字
    vector容器使用和assert断言关键字
    静态变量static和extern外引用
    VS开发入门常识
    电子钱包的消费——java card开发第五篇
    电子钱包的圈存——java card开发第四篇
    PPT2010制作图片玻璃磨砂效果
    Word2010制作个人名片
    Word2010制作自动目录
  • 原文地址:https://www.cnblogs.com/personnel/p/7364187.html
Copyright © 2020-2023  润新知