首页 > 编程语言 >PHP实现两张图片的合并

PHP实现两张图片的合并

时间:2024-11-15 11:45:38浏览次数:3  
标签:files function img px 合并 两张 nbsp var PHP

要求

首先要确认GD库是否安装,若未安装则需要去先安装GD库后再进行操作

有两个方法可快速检查是否安装GD库:

1、在PHP脚本中用 phpinfo() 来查看配置信息

2、在命令行中执行 php -m 命令来查看是否有此模块

效果

这里做了个简单的页面方便看合并的效果

代码

页面代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>合并图片</title>
</head>
<body>
    <form action="index.php" method="post">
        <h3>图一作为背景</h3>
        <div>
            图一:
            <input type="file" id="image1" name="image1" />
            <img style="width: 100px; height: 100px" id="preview1" src="default-image.png" alt="" />
        </div>
        <div id="info1"></div>
        <div>
            图二:
            <input type="file" id="image2" name="image2" />
            <img style="width: 100px; height: 100px" id="preview2" src="default-image.png" alt="" />
        </div>
        <div id="info2"></div>
        <div style="margin-top: 20px">
            图二合并后期望大小:
            <label>
                宽度:<input type="number" id="image2width" name="image2width">&nbsp;px
            </label>
            <label>
                &nbsp;&nbsp;&nbsp;高度:<input type="number" id="image2height" name="image2height">&nbsp;px
            </label>
        </div>
        <div style="margin-top: 20px">
            图二坐标:
            <label>
                x轴:<input type="number" id="image2x" name="image2x">&nbsp;px
            </label>
            <label>
                &nbsp;&nbsp;&nbsp;y轴:<input type="number" id="image2y" name="image2y">&nbsp;px
            </label>
        </div>
        <input style="margin-top: 10px" type="submit" value="提交">
        <div>
            合并后的图片:
            <img id="image" style="width: 300px; height: 150px" src="" alt="" />
        </div>
    </form>
    <script src="jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            $('#image1').on('change', function(event) {
                var files = event.target.files;
                if (files && files[0]) {
                    var reader = new FileReader();
                    reader.onload = function(e) {
                        $('#preview1').attr('src', e.target.result);
                        var img = new Image();
                        img.src = e.target.result;
                        img.onload = function() {
                            $('#info1').text('宽度: ' + img.width + 'px, 高度: ' + img.height + 'px');
                        }
                    };
                    reader.readAsDataURL(files[0]);
                }
            });
            $('#image2').on('change', function(event) {
                var files = event.target.files;
                if (files && files[0]) {
                    var reader = new FileReader();
                    reader.onload = function(e) {
                        $('#preview2').attr('src', e.target.result);
                        var img = new Image();
                        img.src = e.target.result;
                        img.onload = function() {
                            $('#info2').text('宽度: ' + img.width + 'px, 高度: ' + img.height + 'px');
                        }
                    };
                    reader.readAsDataURL(files[0]);
                }
            });
        });
        // 提交表单
        $('form').on('submit', function(e) {
            e.preventDefault(); // 阻止表单默认提交行为
            var formData = new FormData($(this)[0]);
            $.ajax({
                url: 'index.php',
                type: 'POST',
                data: formData,
                contentType: false,
                processData: false,
                success: function(data) {
                    $('#image').attr('src', data);
                },
                error: function(xhr, status, error) {
                    console.error('Error:', error);
                }
            });
        });
    </script>
</body>
</html>

展示的页面不是很重要,按照自己的习惯写即可。下边是PHP合并图片的代码,非常的好理解,没有花里胡哨的代码,只求功能的实现。

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // 保存图片的目录
    $image_dir = "uploads/";
    // 图一(作为背景)
    $image1 = $image_dir . basename($_FILES["image1"]["name"]);
    // 图二
    $image2 = $image_dir . basename($_FILES["image2"]["name"]);
    // 这里对文件类型和大小的判断就省略了,需要的可自行加上
    move_uploaded_file($_FILES["image1"]["tmp_name"], $image1);
    move_uploaded_file($_FILES["image2"]["tmp_name"], $image2);
    $image1 = imagecreatefromstring(file_get_contents($image1));
    $image2 = imagecreatefromstring(file_get_contents($image2));
    // 合并
    imagecopyresampled($image1, $image2, $_POST["image2x"], $_POST["image2y"], 0, 0, $_POST["image2width"],$_POST["image2height"], imagesx($image2), imagesy($image2));
    // 保存合并后的图片
    $fileName = $image_dir . "image" . rand(10000, 99999) . '.png';
    imagepng($image1, $fileName);
    // 返回结果
    echo $fileName;
}

以上就是用PHP实现图片合并的全部代码了,是不是非常简洁方便~

标签:files,function,img,px,合并,两张,nbsp,var,PHP
From: https://blog.csdn.net/zkxiaoxiangzhu/article/details/143792390

相关文章

  • thinkphp升级后报错Declaration of think\app\Url::build() must be compatible wit
    ​将源码中的thinkphp升级后,发现了错误:Declarationofthink\app\Url::build()mustbecompatiblewiththink\route\Url::build():string出现这个错误的原因是,你通过命令“composerupdatetopthink/framework”只升级了框架,没有更新多应用扩展模块。只需要composer运行下面......
  • php- strpos(). substr()
    在PHP中,如果你想要以第一个引号(")为分隔符来分割字符串,并获取第一个分割部分,你可以使用strpos()和substr()函数组合来实现。下面是一个示例:<?php$urlString='https://app3"type="application/vnd.apple.mpegurl"';//找到第一个引号的位置$quotePosition=strpo......
  • PhpSpreadsheet 安装及单元格操作
    1.安装composerrequirephpoffice/phpspreadsheet2.读取xls文件publicfunctiontest(){$reader=\PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xls');$reader->setReadDataOnly(TRUE);$spreadsheet=$reader->load......
  • zblogphp判断首页、列表页、内容页、单页、搜索页、tag页的代码
    判断代码示例{if$type=='index'&&$page=='1'}/*判断首页*/{if$type=='category'}/*判断分类页*/{if$type=='article'}/*判断内容页*/{if$type=='page'}/*判断独立页面*/{if$type=='author'}/*判断用户页*......
  • PHP代码审计 - SQL注入
    SQL注入正则搜索(update|select|insert|delete).*?where.*=示例一:bluecms源码下载:source-trace/bluecms以项目打开网站根目录,并以ctrl+shift+f打开全局搜索(update|select|insert|delete).*?where.*=并开启正则匹配最快寻找脆弱点的方法:1、是否有可控的值2、......
  • 树上启发式合并学习笔记+杂题
    图论系列:前言:欲买桂花同载酒,终不似,少年游。相关题单:戳我一.树上启发式合并前置知识:树的重儿子。1.引入启发式算法是基于人类的经验和直观感觉,对一些算法的优化。(其实就是感觉是对的就是对的),例如并查集的启发式合并,将小集合合并到大集合中。因为在路径压缩的时候,大集合的根......
  • python+vue基于django/flask新农村综合风貌展示平台java+nodejs+php-计算机毕业设计
    目录技术栈和环境说明具体实现截图预期达到的目标系统设计详细视频演示技术路线解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示研究方法感恩大学老师和同学源码获取技术栈和环境说明本系统以Python开发语言......
  • 同城圈子APP隐私设置指南,社交圈子源码,前端uniapp,后端PHP
    圈子系统APP-uniapp源码开源社交圈子小程序社区系统兴趣爱好同城社交社群系统同城圈子APP隐私设置因应用而异,以下为通用步骤:1、进入隐私设置打开APP,点击底部导航栏的“我的”。进入“设置”页面,选择“隐私设置”。2、隐藏位置信息在隐私设置中,找到并点击“隐藏位置”选......
  • 【最新原创毕设】面向课堂教学的智能课堂点名系统+09531(免费领源码)可做计算机毕业设计
    摘要本文旨在设计和实现一个基于智能课堂点名系统的智能助手。随着高校招生规模的不断扩大和信息化技术的发展,为教师提供一款便捷、全面的点名系统具有重要意义。本系统通过整合校园各项服务资源和功能,旨在帮助教师和学生更好地适应智能课堂,提供全方位的指导和支持。本文......
  • (2024最新毕设合集)基于SpringBoot的广州糖水甜品店推荐系统-28495|可做计算机毕业设计J
    摘要随着人们生活水平的提高和饮食习惯的多样化,甜品在日常生活中扮演着越来越重要的角色。特别是在中国南方地区,甜品店和糖水店已经成为人们经常光顾的地方,而广州作为美食之都,拥有众多具有独特风味的糖水甜品店。然而,由于市场竞争激烈,消费者往往面临选择困难,需要花费大量时间......