首页 > 编程语言 >[PHP GD Study]我的世界皮肤转迷你世界

[PHP GD Study]我的世界皮肤转迷你世界

时间:2024-08-20 22:26:07浏览次数:7  
标签:迷你 世界 Study 皮肤 GD PHP

涉及图片旋转、放大、复制
目前仅实现了头部的复制

准备工作:

  1. 迷你世界皮肤底图(命名为miniw.png):
    image
  2. 我的世界皮肤:
    image

源代码:

⚠AI生成

<?php
// 设置上传文件的目标目录
$target_dir = "uploads/";
// 创建目标目录如果不存在
if (!file_exists($target_dir)) {
    mkdir($target_dir, 0777, true);
}
// 设置上传文件的名称
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

// 检查是否有文件被上传
if (isset($_POST["submit"])) {
    // 检查文件是否已上传且不是错误上传
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        // 加载图片
        $image = imagecreatefrompng($target_file);

        // 加载 miniw.png 文件
        $miniwFile = 'miniw.png';
        $miniwImage = imagecreatefrompng($miniwFile);

        // 指定头部在 miniw.png 中的位置
        $headX = 490;
        $headY = 600;
        // 提取头部区域
        $headWidth = 8;
        $headHeight = 8;
        $originalHeadX = 8;
        $originalHeadY = 8;
        $scaleFactor = 50;

        // 创建一个新的图像来存储头部
        $headImage = imagecreatetruecolor($headWidth, $headHeight);
        $rightheadImage = imagecreatetruecolor($headWidth, $headHeight);
        $topheadImage = imagecreatetruecolor($headWidth, $headHeight);
        $leftheadImage = imagecreatetruecolor($headWidth, $headHeight);
        $bottomheadImage = imagecreatetruecolor($headWidth, $headHeight);
        $backheadImage = imagecreatetruecolor($headWidth, $headHeight); // 新增
        
        // 复制头部区域到新图像
        imagecopy($headImage, $image, 0, 0, $originalHeadX, $originalHeadY, $headWidth, $headHeight);
        imagecopy($rightheadImage, $image, 0, 0, $originalHeadX-8, $originalHeadY, $headWidth, $headHeight);
        imagecopy($topheadImage, $image, 0, 0, $originalHeadX, $originalHeadY-8, $headWidth, $headHeight);
        imagecopy($leftheadImage, $image, 0, 0, $originalHeadX+8, $originalHeadY, $headWidth, $headHeight);
        imagecopy($bottomheadImage, $image, 0, 0, $originalHeadX+8, $originalHeadY-8, $headWidth, $headHeight);
        imagecopy($backheadImage, $image, 0, 0, $originalHeadX + 8 + 8, $originalHeadY, $headWidth, $headHeight); // 新增

        // 创建放大后的头部图像
        $scaledHeadImage = imagecreatetruecolor($headWidth * $scaleFactor, $headHeight * $scaleFactor);
        $scaledRightHeadImage = imagecreatetruecolor($headWidth * $scaleFactor, $headHeight * $scaleFactor);
        $scaledTopHeadImage = imagecreatetruecolor($headWidth * $scaleFactor, $headHeight * $scaleFactor);
        $scaledLeftHeadImage = imagecreatetruecolor($headWidth * $scaleFactor, $headHeight * $scaleFactor);
        $scaledBottomHeadImage = imagecreatetruecolor($headWidth * $scaleFactor, $headHeight * $scaleFactor);
        $scaledBackHeadImage = imagecreatetruecolor($headWidth * $scaleFactor, $headHeight * $scaleFactor); // 新增

        // 放大头部图像
        imagecopyresampled($scaledHeadImage, $headImage, 0, 0, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor, $headWidth, $headHeight);
        imagecopyresampled($scaledRightHeadImage, $rightheadImage, 0, 0, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor, $headWidth, $headHeight);
        imagecopyresampled($scaledTopHeadImage, $topheadImage, 0, 0, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor, $headWidth, $headHeight);
        imagecopyresampled($scaledLeftHeadImage, $leftheadImage, 0, 0, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor, $headWidth, $headHeight);
        imagecopyresampled($scaledBottomHeadImage, $bottomheadImage, 0, 0, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor, $headWidth, $headHeight);
        imagecopyresampled($scaledBackHeadImage, $backheadImage, 0, 0, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor, $headWidth, $headHeight); // 新增

        // 将头部图像粘贴到 miniw.png 上
        imagecopy($miniwImage, $scaledHeadImage, $headX, $headY, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor);
        imagecopy($miniwImage, $scaledRightHeadImage, $headX - $headWidth * $scaleFactor, $headY, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor);
        imagecopy($miniwImage, $scaledTopHeadImage, $headX, $headY-$headHeight * $scaleFactor, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor);
        imagecopy($miniwImage, $scaledLeftHeadImage, $headX+$headWidth * $scaleFactor, $headY, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor);
        imagecopy($miniwImage, $scaledBottomHeadImage, $headX, $headY+$headHeight * $scaleFactor, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor);
        imagecopy($miniwImage, $scaledBackHeadImage, $headX + $headHeight * $scaleFactor * 2, $headY, 0, 0, $headWidth * $scaleFactor, $headHeight * $scaleFactor); // 新增

        // 输出最终图像
        header('Content-Type: image/png');
        imagepng($miniwImage);

        imagedestroy($image);
        imagedestroy($headImage);
        imagedestroy($rightheadImage);
        imagedestroy($topheadImage);
        imagedestroy($leftheadImage);
        imagedestroy($bottomheadImage);
        imagedestroy($backheadImage); // 新增
        imagedestroy($scaledHeadImage);
        imagedestroy($scaledRightHeadImage);
        imagedestroy($scaledTopHeadImage);
        imagedestroy($scaledLeftHeadImage);
        imagedestroy($scaledBottomHeadImage);
        imagedestroy($scaledBackHeadImage); // 新增
        imagedestroy($miniwImage);

        // 删除上传的文件
        unlink($target_file);
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

// HTML 表单用于上传文件
?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST" enctype="multipart/form-data">
    Select Minecraft skin to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Skin" name="submit">
</form>

标签:迷你,世界,Study,皮肤,GD,PHP
From: https://www.cnblogs.com/meny233/p/18370458

相关文章

  • 用友crm客户关系管理help.php存在任意文件读取漏洞
    产品介绍:用友U8CRM模块是一个综合性的客户关系管理系统,旨在帮助企业从客户出发,以客户关系为管理对象,通过动态管理客户信息、获得客户知识和评判客户价值状况,来全面提升并保持企业的竞争优势及盈利能力。 Fofa语句: body="用友U8CRM"  poc GET/pub/help.php?key=Y......
  • 【开源分享】2024好用的PHP在线客服系统源码 带搭建教程
    安装教程1.上传源码压缩包到网站目录并解压2.设置网站运行目录public3.设置伪静态,选择thinkphp4.创建数据库,导入数据库:public/service.sql5.修改.env里的数据库配置信息6.启动命令(根目录终端) phpthinkworker:gateway-d更详细的搭建文档需下载压缩包,安装教程.docx......
  • 【开源分享】2024好用的PHP工单管理系统 带搭建教程
    在日益复杂的企业运营环境中,工单管理成为企业提升运维效率、优化服务质量的关键环节。工单管理系统源码以其高效、稳定、灵活的特点,为企业提供了强大的工单管理解决方案。未来,我们将继续优化系统功能,提升用户体验,为企业创造更大的价值。同时,我们也期待更多企业加入我们的行列,共......
  • PHP中的Malformed UTF-8 characters错误解决
    在PHP开发中,开发者经常会遇到MalformedUTF-8characters错误。这个错误通常是由于代码中存在无效的UTF-8字符而引起的。本篇博客将为您介绍如何解决这个问题。什么是UTF-8字符?UTF-8是一种用于表示Unicode字符的编码方式。它可以表示任意Unicode字符,包括ASCII字符以及其他国际字......
  • 基于PHP+MySQL组合开发的DIY分销商城小程序源码系统 附带源代码包以及搭建部署教程
    系统概述随着消费者对购物便捷性、个性化需求的不断增长,传统的电商模式已难以满足市场多样化需求。分销商城小程序以其低门槛、易传播、高粘性等特点,成为众多商家转型升级的首选。本源码系统正是基于这一市场需求,利用PHP这一成熟稳定的后端开发语言和MySQL数据库,结合微信小程......
  • 国产GD32单片机开发入门(一) GD32F103C8T6开发板电路原理图分析
    文章目录一.概要二.技术名词解释三.板子主要电子器件四.原理图电路分析1.原理图总览2.电源电路1)5V电路2)3.3V电路3.LED指示灯电路4.复位电路5.晶振电路1)高频晶振电路2)低频晶振电路6.调试下载电路1)调试电路(SWD接线方式)2)BOOT电路7.外围接口电路8.模块拓展接口9......
  • 【课后作业】Atstudy项目实训
    一、项目介绍atstudy项目是一款在线教学管理系统,用于支持在线班的教学。结合该项目开展项目实训,将系统测试流程、web测试技术、web测试工具、移动app测试技术、移动app测试工具等之前学习的内容在实训中进行消化和掌握,帮助学员积累完整的项目经验。整个项目实训会按照标......
  • NSSCFT [SWPUCTF 2022 新生赛]ez_ez_php
    进入之后就看见一段php代码,那就直接开始代码审计<?phperror_reporting(0);if(isset($_GET['file'])){if(substr($_GET["file"],0,3)==="php"){//截取字符串前三个字符,并与php做判断echo"Nice!!!";include($_GET["file&qu......
  • BigDecimal
    这里写目录标题1、概述2、BigDecimal常用构造函数3、BigDecimal常用方法详解4、BigDecimal格式化5、BigDecimalUtils1、概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应......
  • 易优CMS内置 application/common.php 与 application/function.php 两文件的函数说明
    系统内置函数建议先熟悉系统内置application/common.php与application/function.php两文件的函数说明,如果有符合的函数,尽量在插件里调用;不符合的话就在插件的logic业务逻辑里实现。以当前开发的易优CMS版本为主,要查找函数是否存在,切记只可调用,不可更改全局函数,以免影响整个......