导航:首页 > 文件处理 > php压缩图片到指定大小

php压缩图片到指定大小

发布时间:2025-05-28 09:12:45

A. php 怎么样把一张图片缩小到指定大小

如果是改变显示的大小,直接img标签属性里,width和height设置啊。
如果想真正改变,你看看这个代码(没试验过):
function makeThumb($srcFile,$dstFile,$dstW,$dstH) {
$data=GetImageSize($srcFile,&$info);
switch (CoreUtil::getFileExtension($dstFile)){
case'gif':
$im= @ImageCreateFromGIF($srcFile); break;
case'jpg':
case'jpeg':
$im= @imagecreatefromjpeg($srcFile); break;
case'png':
$im= @ImageCreateFromPNG($srcFile); break;
default:returnFalse;
}
if(!$im) returnFalse;
$srcW=ImageSX($im);
$srcH=ImageSY($im);
$dstX=0;
$dstY=0;
if ($srcW*$dstH>$srcH*$dstW){
$fdstH=round($srcH*$dstW/$srcW);
$dstY=floor(($dstH-$fdstH)/2); $fdstW=$dstW;
} else {
$fdstW=round($srcW*$dstH/$srcH); $dstX=floor(($dstW-$fdstW)/2);
$fdstH=$dstH;
}
$ni=ImageCreate($dstW,$dstH);
$dstX=($dstX<0)?0:$dstX;
$dstY=($dstX<0)?0:$dstY;
$dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;
$dstY=($dstY>($dstH/2))?floor($dstH/s):$dstY;
$black= ImageColorAllocate($ni,0,0,0);
imagefilledrectangle($ni,0,0,$dstW,$dstH,$black);
ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);
ImageJpeg($ni,$dstFile);
imagedestroy($im);
imagedestroy($ni);
returnTrue;
}
大概就是用到imagecreatefromjpeg、imagecreatetruecolor、imageresampled 、 imagepng这几个函数

B. php图片可以等比例的缩放吗

可以。

等比例缩放的方法是:

1、载入选区--自由变换。如下图:

2、按住shift+alt键,使用鼠标调整大小,这种情况下,选区会按照等比例的方法进行缩放的。

C. 如何利用php把上传的图片压缩

<?php
//Thefile
$filename='test.jpg';
$percent=0.5;

//Contenttype
header('Content-Type:image/jpeg');

//Getnewdimensions
list($width,$height)=getimagesize($filename);
$new_width=$width*$percent;
$new_height=$height*$percent;

//Resample
$image_p=imagecreatetruecolor($new_width,$new_height);
$image=imagecreatefromjpeg($filename);
imageresampled($image_p,$image,0,0,0,0,$new_width,$new_height,$width,$height);

//Output
imagejpeg($image_p,null,100);
?>

http://php.net/manual/en/function.imageresampled.php

D. 求php图片缩放处理函数

在PHP网站开发过程中,如果建立的网站涉及大量的图片处理,必然涉及到图片的上传和缩放,保持图片不失真,进行图片缩放。使用之前需要下载安装GD库,以支持PHP图片处理。下面结合代码讲解具体的PHP图片缩放处理的思路。
function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
{
$pic_width = imagesx($im);
$pic_height = imagesy($im);

if(($maxwidth && $pic_width > $maxwidth) ($maxheight && $pic_height > $maxheight))
{
if($maxwidth && $pic_width>$maxwidth)
{
$widthratio = $maxwidth/$pic_width;
$resizewidth_tag = true;
}

if($maxheight && $pic_height>$maxheight)
{
$heightratio = $maxheight/$pic_height;
$resizeheight_tag = true;
}

if($resizewidth_tag && $resizeheight_tag)
{
if($widthratio<$heightratio)
$ratio = $widthratio;
else
$ratio = $heightratio;
}

if($resizewidth_tag && !$resizeheight_tag)
$ratio = $widthratio;
if($resizeheight_tag && !$resizewidth_tag)
$ratio = $heightratio;

$newwidth = $pic_width * $ratio;
$newheight = $pic_height * $ratio;

if(function_exists("imageresampled"))
{
$newim = imagecreatetruecolor($newwidth,$newheight);
imageresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
}
else
{
$newim = imagecreate($newwidth,$newheight);
imageresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
}

$name = $name.$filetype;
imagejpeg($newim,$name);
imagedestroy($newim);
}
else
{
$name = $name.$filetype;
imagejpeg($im,$name);
}
}
参数说明:
$im 图片对象,应用函数之前,需要用imagecreatefromjpeg()读取图片对象,如果PHP环境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();
$maxwidth 定义生成图片的最大宽度(单位:像素)
$maxheight 生成图片的最大高度(单位:像素)
$name 生成的图片名
$filetype 最终生成的图片类型(.jpg/.png/.gif)
代码注释:
第3~4行:读取需要缩放的图片实际宽高
第8~26行:通过计算实际图片宽高与需要生成图片的宽高的压缩比例最终得出进行图片缩放是根据宽度还是高度进行缩放,当前程序是根据宽度进行图片缩放。如果想根据高度进行图片缩放,可以将第22行的语句改成$widthratio>$heightratio
第28~31行:如果实际图片的长度或者宽度小于规定生成图片的长度或者宽度,则要么根据长度进行图片缩放,要么根据宽度进行图片缩放。
第33~34行:计算最终缩放生成的图片长宽。
第36~45行:根据计算出的最终生成图片的长宽改变图片大小,有两种改变图片大小的方法:ImageCopyResized()函数在所有GD版本中有效,但其缩放图像的算法比较粗糙。ImageCopyResamples(),其像素插值算法得到的图像边缘比较平滑,但该函数的速度比ImageCopyResized()慢。
第47~49行:最终生成经过处理后的图片,如果需要生成GIF或PNG,需要将imagejpeg()函数改成imagegif()或imagepng()
第51~56行:如果实际图片的长宽小于规定生成的图片长宽,则保持图片原样,同理,如果需要生成GIF或PNG,需要将imagejpeg()函数改成imagegif()或imagepng()。
特别说明:
GD库1.6.2版以前支持GIF格式,但因GIF格式使用LZW算法牵涉专利权,因此在GD1.6.2版之后不支持GIF的格式。如果是WINDOWS的环境,只要进入PHP.INI文件找到extension=php_gd2.dll,将#去除,重启APACHE即可。如果是Linux环境,又想支持GIF,PNG,JPEG,需要去下载libpng,zlib,以及freetype字体并安装。
OK,PHP图片压缩函数完成,最后概述一下整个处理的思路:
通过计算实际图片的长宽与规定生成图片的长宽之间的缩放比例,根据实际的需求(按照宽度还是按照高度进行图片缩放)计算出最终生成图片的大小,然后应用PHP图片处理函数对图片进行处理,最后输出图片。
以上就是关于PHP图片处理中如何对图片进行压缩并保持不失真的函数说明。

E. php写的json接口如何将图片压缩

用imageresized()缩放,图片就小了,或者采用base64压缩~

阅读全文

与php压缩图片到指定大小相关的资料

热点内容
程序员阅读源码在哪里找 浏览:212
dateintervalphp 浏览:690
王峰程序员 浏览:976
怎么设置服务器别人可以访问 浏览:113
python写n阶乘之和 浏览:848
基于socket的网络编程 浏览:784
phpwhois查询 浏览:549
程序员到工作日常 浏览:64
蚁群算法策略 浏览:227
数控编程学习视频 浏览:34
编程线性代数 浏览:727
探探安卓如何找主播 浏览:955
三什么服务器 浏览:374
路由器怎么搭建服务器地址 浏览:294
迅雷怎么打开php文件 浏览:314
金蝶服务器的ip地址怎么填写 浏览:865
安卓手机如何看app数量 浏览:726
云服务器报价租赁费用 浏览:959
电脑上服务器地址在哪查 浏览:935
c语言char转int的算法 浏览:622