开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3233|回复: 37
收起左侧

[易源码分享] 任意图片转WEBP格式 源码分享 支出多线程

[复制链接]
结帖率:95% (63/66)
发表于 2024-8-27 23:36:41 | 显示全部楼层 |阅读模式   安徽省淮南市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -



搜狗截图24年08月27日2326_1.png

WEBP的压缩比例公认的牛,我这边现在远程协议用的就是这个压缩传输推送到WEB

調用方法簡單,直接传递图片字节集进去,然后返回压缩后的字节集。相比网上调用的DLL都是压缩到本地 这个好用多了,模块我写了两种方法 一个是直接DLL调用 一个是内存加载,内存加载的调用了凌哥的内存加载提取版 可以自行替换其他的




这是DLL的C++代码。 看得懂的自己改 看不懂的直接忽略

#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
#include "webp/encode.h"

// input_image 传入的图片数据
// input_size 传入的图片大小
// processed_data 返回处理过的数据 易语言里面调用需要传址
// processed_size 返回处理过图片大小
// Image_quality 图片质量
bool __stdcall SaveImageAsWebp(const char* input_image, size_t input_size, char** processed_data, size_t* processed_size, int Image_quality) {
    int width, height, channels;
    // 使用stb_image从字节数组中加载图像
    unsigned char* img_data = stbi_load_from_memory(reinterpret_cast<const uint8_t*>(input_image), static_cast<int>(input_size), &width, &height, &channels, 4);
    if (img_data == nullptr) {
       // std::cerr << "内存加载图像出错." << std::endl;
        return false;
    }

    // 编码图像为WEBP格式
    unsigned char* webp_data = nullptr;
    *processed_size = WebPEncodeRGBA(img_data, width, height, width * 4, Image_quality, &webp_data);
    if (*processed_size == 0) {
       // std::cerr << "将图像编码为WEBP格式时出错." << std::endl;
        stbi_image_free(img_data);
        return false;
    }

    // 将编码后的数据分配给processed_data
    *processed_data = reinterpret_cast<char*>(webp_data);



    // 释放img_data资源
    stbi_image_free(img_data);

    return true;
}

// 调用方在使用完processed_data后需要调用这个函数来释放资源
void __stdcall FreeWebpData(unsigned char** data) {
    if (data && *data) {
        free(*data);
        *data = nullptr; // 将指针设为nullptr,以防止重复释放
    }
}








Release.zip

653.18 KB, 下载次数: 79, 下载积分: 精币 -2 枚

售价: 2 枚 精币  [记录]

评分

参与人数 3好评 +2 精币 +7 收起 理由
光影魔术 + 2 支持开源~!感谢分享
jin1oo1 + 1 + 2 支持开源~!感谢分享
maozaiba + 1 + 3 奉上小小红包希望笑纳

查看全部评分


本帖被以下淘专辑推荐:

结帖率:95% (63/66)

签到天数: 12 天

 楼主| 发表于 2024-8-27 23:38:24 | 显示全部楼层   安徽省淮南市
如果有单子可以联系我,我技术有限但是一些简单的单子还是可以开发的,价格不贵 感谢啦
回复 支持 反对

使用道具 举报

结帖率:25% (1/4)

签到天数: 12 天

发表于 前天 08:38 | 显示全部楼层   四川省泸州市
任意图片转WEBP格式
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2024-11-8 21:31:58 | 显示全部楼层   江西省赣州市
666啊兄弟
回复 支持 反对

使用道具 举报

签到天数: 19 天

发表于 2024-10-21 17:53:55 | 显示全部楼层   河北省石家庄市
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2024-10-11 00:23:09 | 显示全部楼层   黑龙江省鹤岗市
感谢分享。。。。。。。。。。
回复 支持 反对

使用道具 举报

签到天数: 5 天

发表于 2024-9-29 23:50:49 高大上手机用户 | 显示全部楼层   广西壮族自治区梧州市
青春的思念 发表于 2024-9-28 23:11
可能是我DLL加壳的关系吧 下个版本我改下看看

谢谢大佬!
回复 支持 反对

使用道具 举报

结帖率:95% (63/66)

签到天数: 12 天

 楼主| 发表于 2024-9-28 23:11:55 | 显示全部楼层   安徽省淮南市
li6607 发表于 2024-9-28 06:23
大佬,我测试有bug,用内存加载dll方式转出来的图是镜像的,是啥原因呢

可能是我DLL加壳的关系吧 下个版本我改下看看
回复 支持 反对

使用道具 举报

签到天数: 5 天

发表于 2024-9-28 06:23:03 | 显示全部楼层   广西壮族自治区梧州市
青春的思念 发表于 2024-8-27 23:38
如果有单子可以联系我,我技术有限但是一些简单的单子还是可以开发的,价格不贵 感谢啦 ...

大佬,我测试有bug,用内存加载dll方式转出来的图是镜像的,是啥原因呢

点评

可能是我DLL加壳的关系吧 下个版本我改下看看   安徽省淮南市  详情 回复 发表于 2024-9-28 23:11
回复 支持 反对

使用道具 举报

发表于 2024-9-12 11:06:11 | 显示全部楼层   四川省成都市
感谢分享,支持开源!!!
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2024-9-12 01:25:58 | 显示全部楼层   重庆市重庆市
感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表