php源码 单色bmp图片取模工具 按任意方式取模 生成字节数组 自由编辑点阵

本文主要是介绍php源码 单色bmp图片取模工具 按任意方式取模 生成字节数组 自由编辑点阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://2.wjsou.com/BMP/index.html

想试试chatGPT4生成,还是要手工改

php 写一个网页界面上可以选择一张bmp图片,界面上就显示这张bmp图片,
点生成取模按钮,在图片下方会显示这张bmp图片的取模数据。
取模规则是按界面设置的,是否横向取模或纵向取模 ,是否从左到右,是否从下到上,是否高位在前或高位在后,是否字节内像素数据反转,这些可以在界面切换。最后的数据是16进制字节数组,类似于下面格式
//图片:D:\test.bmp
//数据排列:横向从左到右从上到下 高位在前,宽:16,高:16
//点阵数据:
char Msk[]={
0x00, 0x00, 0x3E, 0x20, 0x20, 0x3C, 0x22, 0x02, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

支持php 5.6及以上版本。其它版本我没有测。

没有用插件gd2等。用原始的读文件。
单色bmp图片取模工具 php源码

读每个点的颜色(放弃这个方案)

这个图片处理要用到插件,就不用这个方案。gd2要php7.2才支持。用这个的好处就是可以任意图片png,jpg,bmp32位等。

bmp解析,直接读数据

倒过来,即0000003E处是像素点阵数据。其它信息都不太重要。
在这里插入图片描述

单色点阵数据在bmp中的格式

在这里插入图片描述

取模规则

在这里插入图片描述
可以自由组合。参照windows版:
在这里插入图片描述

对照验证

在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>单色bmp图片取模工具 php源码</title>
</head>
<body><form id="uploadForm" enctype="multipart/form-data"><input type="file" name="image" accept=".bmp" required><br><input type="checkbox" name="horizontal"> 横向取模(不勾选为纵向)<br><input type="checkbox" name="secondByteOnRight" checked> 第二字节在右(不勾选为第二字节在在下)<br><input type="checkbox" name="topToBottom" checked> 从上到下(无效)<input type="checkbox" name="leftToRight" checked> 从左到右(无效)<br><input type="checkbox" name="highBitFirst" checked> 高位在前(即大端模式)<input type="checkbox" name="pixelReverse" checked> 像素反转(即黑白颠倒)<br><button type="button" onclick="submitForm()">生成取模</button></form><br><img id="previewImage" style="display:none;"><pre id="modResult"></pre><script>function submitForm() {var formData = new FormData(document.getElementById('uploadForm'));fetch('process_image.php', {method: 'POST',body: formData,}).then(response => response.json()).then(data => {document.getElementById('previewImage').src = data.imageUrl;document.getElementById('previewImage').style.display = 'block';document.getElementById('modResult').textContent = data.modData;});}</script>
</body>
</html>

这篇关于php源码 单色bmp图片取模工具 按任意方式取模 生成字节数组 自由编辑点阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/766748

相关文章

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二