本文在学习PHP100的基础上,提高代码的适用兼容性,封装一部分常用功能。

下面的代码并没有完全封装,只是做成了类的形式,为的就是给各位留出更多自定义函数如返回产生图片名称、路径、大小,新图片的名称等的位置,方面开发自己的类。

下面是代码:注释充分,无须解释!

代码

<?php
/*
* Created on 2010-10-27
* BY��QQ542900563
* Copyrights Reserved 2000-2020
* 本例演示图片水、缩略图的生成办法
*/

//定义参数:
$old="liu.jpg";//要修改的图
$water="m.png";//水印图
$Max_W=600;//照片的最大宽度
$Max_H=400;//照片的最大高度
$Min_W=100;//缩略图宽
$Min_H=80;//缩略图高

//分别载入两张图片
$im=imagecreatefromjpeg($old);
$img2=imagecreatefrompng($water);

//取得各自的长宽,计算位置
$im_WH=getimagesize($old);
$im_W=$im_WH[0];
$im_H=$im_WH[1];

$img2_WH=getimagesize($water);
$img2_W=$img2_WH[0];
$img2_H=$img2_WH[1];

//定义存放的位置
$NewX=$im_W-$img2_W;
$NewY=$im_H-$img2_H;

//填充水印
imagecopy($im,$img2,$NewX,$NewY,0,0,$img2_W,$img2_H);

//控制图片大小并生成缩略图

//1.计算大图像生成标准图像和缩略图的宽高
$New_W=0;//标准图像的宽
$New_H=0;//标准图像的高
$New_M_W=0;//缩略图的宽
$New_M_H=0;//缩略图的高

if($im_W>$Max_W||$im_H>$Min_H)
{
if($im_W/$im_H>=$Max_W/$Max_H)
{
$New_W=$Max_W;
$New_H=$Max_H*$im_W/$im_H;
$New_M_W=$Min_W;
$New_M_H=$Min_H*$im_W/$im_H;

}else
{
$New_H=$Max_H;
$New_W=$Max_H*$im_W/$im_H;
$New_M_H=$Min_H;
$New_M_W=$Min_H*$im_W/$im_H;
}
}else
{

$New_W=$im_W;
$New_H=$im_H;

if($im_W/$im_H>=$Max_W/$Max_H)
{
$New_M_W=$Min_W;
$New_M_H=$Min_H*$im_W/$im_H;
}else
{
$New_M_H=$Min_H;
$New_M_W=$Min_H*$im_W/$im_H;
}

}

//2.生成标准大图
$Standard_img=imagecreatetruecolor($New_W,$New_H);
imagecopyresized ( $Standard_img, $im, 0,0,0,0, $New_W, $New_H, $im_W, $im_H );
imagejpeg($Standard_img,"New".$old); //在原图后面加上New作为输出文件名

//3.生成缩略图

$Thumbnail_img=imagecreatetruecolor($New_M_W,$New_M_H);
imagecopyresized($Thumbnail_img,$im,0,0,0,0,$New_M_W,$New_M_H,$im_W,$im_H);
imagejpeg($Thumbnail_img,"Thumb".$old);

//header("Content-type:image/jpeg");
//imagejpeg($im);
?>

转载于:https://www.cnblogs.com/long_/archive/2010/10/27/1862914.html

【PHP】【PHP100改进系列】上传图片水印、缩略图、图片大小预处理类相关推荐

  1. java 使用Thumbnailator 上传图片 并压缩图片大小

    http://www.cnblogs.com/miskis/p/5500822.html java 上传图片 并压缩图片大小 Thumbnailator 是一个优秀的图片处理的Google开源Java ...

  2. vue之原生上传图片并压缩图片大小(1)

    vue之上传图片并压缩图片大小 vue之上传图片并压缩图片大小 vue之上传图片并压缩图片大小 这里使用的是 compressorjs , 安装 npm i compressorjs 注意:这个插件是 ...

  3. 上传图片并且判断图片大小、类型、宽高

    上传图片并且判断图片大小.类型.宽高 项目中需要上传图片并且判断大小.类型.宽高 changeCarousel(e){ //判断文件大小 var file = e.target.files[0]var ...

  4. 怎么修改CSDN上传图片水印的字体大小?(去水印)

    比如: 我想修改下图右下角水印的字体大小,怎么做呢? 只需要在图片size这里修改就可以了: 比如我把它改成160: 显示就成这样了 注意这是在使用markdown编辑器下修改的 那么如何去水印呢,只 ...

  5. springMVC MultipartFile 上传图片时修改图片大小

    1.引言 服务器配置比较低,打开网站时加载1MB+的图片 速度很慢,影响客户体验.所以从网上找了java修改图片大小的方法,这里记录一下 以备以后不时之需.我这里设置的是宽240,,高135 按照16 ...

  6. java 实现BufferedImage和ImageReader两种方式获取图片宽高、判断图片类型、获取图片大小工具类代码以及测试响应结果

    源码: import org.springframework.web.multipart.MultipartFile;import javax.imageio.ImageIO; import java ...

  7. 上传图片时,图片大小不一,设置宽高,图片拉伸,如何处理呢,我来告诉你...

    2019独角兽企业重金招聘Python工程师标准>>> 对于上传图片的烦恼,今天给你个例子,很实用的哦 这个是原来大小不一的图片 经过处理后 代码如下index.html <! ...

  8. vue-quill-editor富文本 上传图片可调节图片大小

    1.安装插件 npm install vue-quill-editor npm install quill-image-resize-module 2.在main.js中引入 我在页面引入 注册会报错 ...

  9. Java 上传图片至OSS并返回图片地址工具类可直接用

    OSS上传图片并返回图片地址工具类 OSS上传图片并且返回地址工具类 可以直接拿去用 后续会继续更新 需要注意的点: 下面代码里的@Value里的几个值我是放在application.yml文件里的, ...

最新文章

  1. winform模拟登陆网页_【教程】模拟登陆网站 之 C#版(内含两种版本的完整的可运行的代码)...
  2. 如何做一款成功的APP应用
  3. [Android Pro] Android源码编译后,再重编译所需要做的清理工作
  4. 蔡高厅老师 - 高等数学阅读笔记 - 14 定积分 -定积分的换元法 - 广义积分和伽马函数(65、66、67)
  5. 手机c语言有趣的小程序,一个有趣的小程序
  6. 苹果手机运行html游戏,苹果手机如何运行PSP游戏方法
  7. 五阶段--使用 Kibana 操作 ES/ 搜索
  8. html文件恢复工具,小飞文件恢复工具
  9. 应用计算机技术建立起来的地图,韩梅家住鼓楼附近,约好同学夏宇一块儿去景山公园踏青。(15分)...
  10. linux下使用LVM合并挂载硬盘以及扩容
  11. IT群侠传第二回一专多能
  12. 编译内核 make modules_install报错make[1]: *** [arch/x86/crypto/aegis128-aesni.ko] Error 1 Makefile:1281: r
  13. springBoot使用RestTemplate报错:No instance available for xxx.xxx.xxx.xxx
  14. 【哈夫曼树】创建哈夫曼树
  15. 安卓开发———打开相机拍照或者打开相册选择照片并显示出来
  16. unity 扎金花比大小
  17. ajax应用如何做好seo
  18. 【第1398期】一文读懂前端缓存
  19. 「微信将不再提供小程序打开 App 技术服务」带给我的思考
  20. [MySQL] 在线 DDL 工具 gh-ost 原理简介

热门文章

  1. LeetCode(748)——最短完整词(JavaScript)
  2. 【Vue】—Vue的模板语法
  3. mysql 5.6.14源码安装_CentOS 6.4下编译安装MySQL 5.6.14详细步骤
  4. python zip用法_Python zip()用法及代码示例
  5. 500并发相当于多少人_linux开发技术之线程池accept处理高并发connect(含源码)
  6. 父亲购房后去世,房产证还没办,后妈和父亲没结婚,户口簿上有父亲,儿子,妹妹,那房产证应该写谁的名字?
  7. 你在办公室遇到的最诡异的事情是什么?
  8. 自驾游,遇陌生夫妻搭车坐了一千多公里,执意要给钱,我能收吗?
  9. 今天分享一个做自媒体的方法论
  10. linux-2.6.