遇到这样一个需求:原图大小不一,而且留白也大小不一,需要将原图切出来一个核心图,然后将图片左右留白,组成一个其他尺寸的图片。换句话说,原图在新图片中的位置是可以控制的。

这里思路是:先创建一个规定大小的底图,然后将原图经过缩放后,放到底图中,也就是图片叠加。

####这里实现的是第二个箭头所示的效果。

(完成第一个箭头效果请移步http://www.cnblogs.com/haodaquan/p/6381636.html)

下面的代码可供参考:

<?php
/************************************************************
** @Description:  图片叠加demo
** @Author: haodaquan
** @Date:   2016-11-30 12:07:51
** @Last Modified by:   haodaquan
** @Last Modified time: 2017-02-09 13:59:51
*************************************************************/
header('content-type:image/jpeg');#图片显示 $bg_width = $bg_height = 600; #创建真彩色画布并填补灰色
$final_srouce       = imagecreatetruecolor($bg_width,$bg_height);
$background_color = imagecolorAllocate($final_srouce,255,255,255);#白色底色
imagefill($final_srouce,0,0,$background_color); 
#获取覆盖图片 大小为121*75
$source           = '/Users/haodaquan/Sites/PyWeb/CoreImage/newImage/new_image.jpg';
$img_source          = imagecreatefromjpeg($source);
$info             = getimagesize($source);
######################
#1、直接覆盖图片加到画布上 
#前两个数字为画布起始xy坐标,中间两个数字为覆盖图片的起始xy坐标,最后两个数字表示覆盖图片的xy长度
#imagecopy($final_srouce,$img_source,30,50,0,0,121,75); #新图宽度留白,高度留白
$blank_width  = 30;
$blank_height = 50; #假设宽度优先填满新图,宽度大于高度的图
#计算缩放比率
$new_width  = $bg_width-2*$blank_width;
$new_height = $info[1]*($new_width/$info[0]); #2、带缩放的叠加 详见底部函数注释
imagecopyresampled($final_srouce,$img_source,$blank_width,$blank_height,0,0,$new_width,$new_height,$info[0],$info[1]);
###################### imagejpeg($final_srouce, './tmp/final_srouce.jpeg',100);#生成图片 第三个参数为质量[1-100]
imagejpeg($final_srouce); #页面显示图片 #销毁资源
imagedestroy($final_srouce);
imagedestroy($img_source); // bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
// $dst_image:新建的图片
// $src_image:需要载入的图片
// $dst_x:设定需要载入的图片在新图中的x坐标
// $dst_y:设定需要载入的图片在新图中的y坐标
// $src_x:设定载入图片要载入的区域x坐标
// $src_y:设定载入图片要载入的区域y坐标
// $dst_w:设定载入的原图的宽度(在此设置缩放)
// $dst_h:设定载入的原图的高度(在此设置缩放)
// $src_w:原图要载入的宽度
// $src_h:原图要载入的高度

php 图片指定留白叠加缩放的更多相关文章

  1. C#图片处理示例(裁剪,缩放,清晰度,水印)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  2. object-fit 解决图片指定大小被压缩问题

    object-fit 解决图片指定大小被压缩问题 第一次遇到这个属性,是在给video 写 poster的时候,选取的作为poster的img的尺寸有点小,导致video播放器两边有留白.在控制台查看 ...

  3. java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)

    最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...

  4. 超大图片显示,可任意缩放,移动,不用DiskLruCache

    1.演示,代码 下载示例apk      下载项目 :  https://gitee.com/xi/LImage.git 2.遇到的问题 想省内存,不太可能 只支持拖拽手势,不支持缩放相对简单,解码v ...

  5. js实现图片的等比例缩放

      js实现图片的等比例缩放 CreateTime--2018年3月6日14:04:18 Author:Marydon 1.代码展示 /** * 图片按宽高比例进行自动缩放 * @param ImgO ...

  6. img只显示图片一部分 或 css设置背景图片只显示图片指定区域

    17:14 2016/3/22img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片左 ...

  7. 实现图片的2次缩放后再进行candy边缘检测

    //实现图片的2次缩放后再进行candy边缘检测//Author:SD//Date:2015-9-27#include "cv.h"#include "highgui.h ...

  8. C#开发自动照片(图片)裁剪(缩放)工具

    1.需求分析 用winform窗体程序,开发一个能够自动.批量对图片进行缩放和裁剪的程序. 原本想直接从网上找类型的工具直接用,但是无奈现在网上能找到的工具,要么不能用,要么就是很 恶心的下载完后还有 ...

  9. 使用canvas实现图片预览、缩放(压缩)以及生成文件下载

    参考 https://www.runoob.com/html/html5-canvas.html https://www.cnblogs.com/yuanzhiguo/p/8288822.html h ...

随机推荐

  1. 学习笔记13_第三方js控件&EasyUI使用

    第三方UI包使用思路: 1.先映入各种JS包,包含JS版本包,第三方CSS包,第三方主JS包,第三方语言包. 2.确定要做什么,是对话框还是表格.3.根据Demo和目的,在<body>内, ...

  2. CSP-S:追忆

    Warning:这一篇极其中二,开了那个大会莫名有感而发. 模拟测试17那套题啊... 开的这个大会为什么弄得我退役感如此强烈... 早就想收藏了,还是记下来吧 <入阵曲> 丹青千秋酿, ...

  3. 二、安装JDK - Java软件的安装

    jdk是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序. 1.安装包的下载:http://pan.baidu.com/s/1mgh58ve (该安装包是绿色的,解压 ...

  4. CSP-S 94 (sb lsc gc赛)

    不要问我为什么题解倒着写,因为在填坑! 关于这场比赛就是我sb的再现 考完试旁边_LH叱的一声说道:“lsc真**垃圾”; lsc:........确实很垃圾! ------------------- ...

  5. Java操作数栈

    - 与局部变量表一样,均以字长为单位的数组.不过局部变量表用的是索引,操作数栈是弹栈/压栈来访问.操作数栈可理解为java虚拟机栈中的一个用于计算的临时数据存储区.- 存储的数据与局部变量表一致含in ...

  6. 003.Kubernetes二进制部署准备

    一 前置准备 1.1 前置条件 相应的充足资源的Linux服务器: 设置相应的主机名,参考命令: hostnamectl set-hostname k8smaster Mac及UUID唯一: 若未关闭 ...

  7. linux写系统服务的方法

    linux写系统服务的方法 2.1 首先编写demo程序:hello.c<pre>#include <stdio.h> # chkconfig: 2345 10 90 main ...

  8. php mkdir不能创建文件夹的原因

    php mkdir不能创建文件夹的原因 1 权限问题2 open_basedir设置问题 参考方法http://newmiracle.cn/?p=2896

  9. 使用 vue-element-admin 动态路由渲染

    附上:vue-element-admin 官方文档 vue-element-admin https://panjiachen.github.io/vue-element-admin-site/zh/g ...

  10. 201871010114-李岩松《面向对象程序设计(java)》第一周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...