本例子介绍使用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图片的更多相关文章

  1. CSS让DIV按照背景图片的比例缩放,并让背景图片填充整个元素(转)

    目的是:通过background的一系列属性,让DIV按照背景图片的比例缩放,并让背景图片填充整个DIV 首先我们需要让背景图片在指定的DIV中全部填充显示 之前看有用类似 background-at ...

  2. android 缩放平移自定义View 显示图片

    1.背景 现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位~~~ 我相信看图的整个步骤,大家或者说用户 ...

  3. Android ImageView的几种对图片的缩放处理 解决imageview放大图片后失真问题解决办法

    我的解决办法: 1 首先设置android:layout_width=”wrap_content”和android:layout_height=”wrap_content”,否则你按比例缩放后的图片放 ...

  4. PHP图片裁剪与缩放示例(无损裁剪图片)

    <?php /* *exif_imagetype -- 判断一个图像的类型 *功能说明:函数功能是把一个图像裁剪为任意大小的图像,并保持图像不变形 *参数说明:输入 需要处理图片的 文件名,生成 ...

  5. php 图片上传的公共方法(按图片宽高缩放或原图)

    写的用于图片上传的公共方法类调用方法: $upload_name='pic';$type = 'logo_val';$file_name = 'logo_' . $user_id .create_st ...

  6. wpf图片查看器,支持鼠标滚动缩放拖拽

    最近项目需要,要用到一个图片查看器,类似于windows自带的图片查看器那样,鼠标滚动可以缩放,可以拖拽图片,于是就写了这个简单的图片查看器. 前台代码: <Window x:Class=&qu ...

  7. Winform图片拖拽与缩放

    最近做项目的时候遇到上传施工平面布置图,查看,因为图片比较大,一般的显示器分辨率无法显示全,然后还需要放大看清楚图片里面的文字内容,所以需要用到图片的拖拽与缩放功能.这里整理下具体操作. 首先新建一个 ...

  8. Android 图片的缩放与旋转

    本文实现Android中的图片的缩放效果 首先设计布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...

  9. java攻城狮之路(Android篇)--MP3 MP4、拍照、国际化、样式主题、图片移动和缩放

    一.MP3播放器 查看Android API文档可以看到MediaPlayer状态转换图: 练习: package com.shellway.mp3player; import java.io.Fil ...

随机推荐

  1. nginx中文文档

    http://www.nginx.cn/doc/ LNMP :https://lnmp.org/faq/lnmp-vhost-add-howto.html 配置详解 配置详解2

  2. PAT——1043. 输出PATest

    给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按“PATestPATest....”这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一样多的,若某种字符已 ...

  3. javascript之promise

    js语言的执行环境是"单线程",即一次只能执行一个任务,如果有多个任务的话,就需要排队,只有前面的一个任务执行结束了,再执行后面的一个任务.于是异步执行就变得非常重要,异步执行之后 ...

  4. Notes 20180310 : String第二讲_String的声明与创建

    1  字符串的声明与创建 学习String的第一步就是创建(声明)字符串,我们在这里之所以分为创建和声明(其实是一个意思,都是创建字符串,但两者却有本质的区别)是因为String是一个很特殊的类,它的 ...

  5. #leetcode刷题之路30-串联所有单词的子串

    给定一个字符串 s 和一些长度相同的单词 words.找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置.注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考 ...

  6. 【CSU 1803】2016 (数学)

    Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. Input 输入包含不超过 30 ...

  7. ABAP术语-World Wide Web

    World Wide Web 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/21/1115728.html Internet service ...

  8. python if-elif-else 结构判断输入值处于何种年龄段

    输入变量 age 的值,再编写一个 if-elif-else 结构,根据 age的值判断处于人生的哪个阶段.如果一个人的年龄小于 2岁,就打印一条消息,指出他是婴儿.如果一个人的年龄为 2(含)-4岁 ...

  9. JQ+css3 导航栏到底部上移

    导航栏 .navigation { position: fixed; bottom: 100px; right: 100px; z-index:; } .navigation { transition ...

  10. jqu

    1 /*2 * 说明:3 * 本源代码的中文注释乃Auscarlin呕心沥血所作.旨在促进jQuery的传播以及向广大jQuery爱好者提供一个进阶4 *的途径,以让各位更加深入地了解jQuery,学 ...