php缩放处理png和jpg图片
本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理
<?php
$target_width = 120; //目标图片宽度
$target_height = 150; //目标图片高度
$target_img = 'me.jpg'; //剪切图片 deal($target_width,$target_height,$target_img); //调用主函数
主函数
/**
*主函数: 获取图片信息,准备参数
*/
function deal($target_width,$target_height,$target_img){
$img_info=getimagesize($target_img); // 获取原图尺寸 $original_width=$img_info[0]; //原图片宽度
$original_height=$img_info[1]; //原图片高度
$original_mime=$img_info['mime'];
$type=substr($original_mime,6); //原本$original_mime值为'image/类型',通过从第六位字符开始截取得到图片类型 $target_scale = $target_height/$target_width; //目标图像长宽比 $original_scale = $original_height/$original_width; // 原图片长宽比 if ($original_scale>=$target_scale){ // 过高
$w = intval($src_w);
$h = intval($target_scale*$w); $x = 0;
$y = ($original_height - $h)/3;
} else { // 过宽
$h = intval($original_height);
$w = intval($h/$target_scale); $x = ($original_width - $w)/2;
$y = 0;
} switch($type){
case 'jpeg':
dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //调用处理jpg函数
break;
case 'png':
dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //调用处理png函数
break;
default:
echo "请确认需要处理图片类型是否正确";
break;
}
}
处理jpg函数
/**
* 处理jpg函数
*/
function dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height){
// 剪裁
$source=imagecreatefromjpeg($target_img); //创建一个新图象 $croped=imagecreatetruecolor($w, $h); //新建一个真彩色图像
imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分 // 缩放
$scale = $target_width / $w;
$target = imagecreatetruecolor($target_width, $target_height); //新建一个真彩色图像
$final_w = intval($w * $scale);
$final_h = intval($h * $scale);
imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h); //重采样拷贝部分图像并调整大小 // 保存
$timestamp = time();
imagejpeg($target, "$timestamp.jpg"); imagedestroy($target);
}
处理png函数
/**
* 处理png函数
*/
function dealpng($target_img,$w,$h,$x,$y,$original_width,$original_height,$target_width,$target_height){
// 剪裁
$source=imagecreatefrompng($target_img); $croped=imagecreatetruecolor($w, $h); //新建一个真彩色图像
imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分 // 缩放
$scale = $target_width / $w;
$target = imagecreatetruecolor($target_width, $target_height); //新建一个真彩色图像
$final_w = intval($w * $scale);
$final_h = intval($h * $scale);
imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h); //重采样拷贝部分图像并调整大小 // 保存
$timestamp = time(); imagepng($target, "$timestamp.png");
imagedestroy($target);
}
php缩放处理png和jpg图片的更多相关文章
- CSS让DIV按照背景图片的比例缩放,并让背景图片填充整个元素(转)
目的是:通过background的一系列属性,让DIV按照背景图片的比例缩放,并让背景图片填充整个DIV 首先我们需要让背景图片在指定的DIV中全部填充显示 之前看有用类似 background-at ...
- android 缩放平移自定义View 显示图片
1.背景 现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位~~~ 我相信看图的整个步骤,大家或者说用户 ...
- Android ImageView的几种对图片的缩放处理 解决imageview放大图片后失真问题解决办法
我的解决办法: 1 首先设置android:layout_width=”wrap_content”和android:layout_height=”wrap_content”,否则你按比例缩放后的图片放 ...
- PHP图片裁剪与缩放示例(无损裁剪图片)
<?php /* *exif_imagetype -- 判断一个图像的类型 *功能说明:函数功能是把一个图像裁剪为任意大小的图像,并保持图像不变形 *参数说明:输入 需要处理图片的 文件名,生成 ...
- php 图片上传的公共方法(按图片宽高缩放或原图)
写的用于图片上传的公共方法类调用方法: $upload_name='pic';$type = 'logo_val';$file_name = 'logo_' . $user_id .create_st ...
- wpf图片查看器,支持鼠标滚动缩放拖拽
最近项目需要,要用到一个图片查看器,类似于windows自带的图片查看器那样,鼠标滚动可以缩放,可以拖拽图片,于是就写了这个简单的图片查看器. 前台代码: <Window x:Class=&qu ...
- Winform图片拖拽与缩放
最近做项目的时候遇到上传施工平面布置图,查看,因为图片比较大,一般的显示器分辨率无法显示全,然后还需要放大看清楚图片里面的文字内容,所以需要用到图片的拖拽与缩放功能.这里整理下具体操作. 首先新建一个 ...
- Android 图片的缩放与旋转
本文实现Android中的图片的缩放效果 首先设计布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...
- java攻城狮之路(Android篇)--MP3 MP4、拍照、国际化、样式主题、图片移动和缩放
一.MP3播放器 查看Android API文档可以看到MediaPlayer状态转换图: 练习: package com.shellway.mp3player; import java.io.Fil ...
随机推荐
- PAT——1037. 在霍格沃茨找零钱
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...
- ovs加dpdk在日志中查看更多运行细节的方法
想查看更多dpdk+ovs的更多运行细节,可以采用以下方法,增加更多运行日志. 在终端输入: ovs-appctl vlog/set dpdk:file:dbg ovs-appctl vlog/set ...
- C#中调用方法
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- HDFS的Write过程
hadoop中重要的组成部分HDFS,它所发挥的重要作用是进行文件的后端存储.HDFS针对的是低端的服务器,场景为读操作多.写操作少的情况.在分布式存储情况下,比较容易出现的情况是数据的损害,为了保证 ...
- 寻找最小的k个数(四种方法)
1 使用从大到小的优先队列保存最小的K个数,每次取出K个数之后的其余数和堆顶元素比较,如果比堆顶元素小,则将堆顶元素删除,将该元素插入 void topK(int arr[],int n,int k) ...
- 轻量ORM-SqlRepoEx (十五)最佳实践之数据映射(Map)
简介:SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的是Lambda表达式,所以,对c#程 ...
- 【腾讯敏捷转型No.3】Scrum有什么好?
在敏捷转型的过程中,除了敏捷宣言中的四个价值观和十二条原则以外,并没有太多比较权威的理论实践. 如图一,敏捷宣言中的四个价值观: (图一) 四条敏捷核心价值观指出了敏捷的核心思想,但是并没有仔细说明具 ...
- oo第二次总结作业
OO电梯作业总结 这三周的作业和课堂内容以及OS的课上内容都相同,都是关于多线程方面的知识.在这次作业中由浅入深布置了三项多线程电梯方面的作业,让我们在实践中感受了多线程的工作原理以及各项需要注意的要 ...
- WebGl 缩放(矩阵变换)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 关于pythond在终端中运行
下载python并安装后,如果想要在终端中直接运行,我们需要配置环境变量. 在计算机右击选择属性,,选择高级属性,点击环境变量,,即可新建环境变量, ,然后可以在终端中运行python解释器.