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

作者&投稿:翠浅 (若有异议请与网页底部的电邮联系)
html图片如何按屏幕大小等比例缩放?~

html图片按屏幕大小等比例缩放若浏览器允许可按Ctrl+鼠标滚轮滑动缩放,或用代码。
具体方法如下:
Ctrl+鼠标滚轮滑动缩放
css代码与htlm代码
CSS 代码如下:
#background
{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-color: #211f1f;
display:none\8;
}
#background .bg-photo
{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: none;
overflow: hidden;
-webkit-background-size: cover !important;
-moz-background-size: cover !important;
-o-background-size: cover !important;
background-size: cover !important;
}

#background .bg-photo-1
{
background: url('../image/alone.jpg') no-repeat center center;
}

#background-ie {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-color: #211f1f;
}
HTML代码如下:




参考资料
html 网页背景图片根据屏幕大小CSS自动缩放.CSDN博客[引用时间2017-12-29]

首先说一下思路,首先你要判断图片的宽度,这需要用到一个函数,个人比较喜欢用getimagesize()
其次是等比例绽放,需要用到imagecopyresized(当然还有其他函数)
注意:我这里用到的是gd库
实现:
写一个函数或者类都行,我这里就以面向过程的方式来写,你可以整理一下
$file = 'pic.jpg'; //原图片文件
$maxWidth = 750;
$info = getimagesize($file); //取得一个图片信息的数组,索引 0 包含图像宽度的像素值,索引 1 包含图像高度的像素值。索引 2 是图像类型的标记
if($info[0] > $maxWidth )
{
exit('图片小于'.$maxWidth.',不需要缩放');
}
$im = imagecreatefromjpeg($file); //根据图片的格式对应的不同的函数,在此不多赘述。
$rate = $maxWidth/$info[0]; //计算绽放比例
$maxHeight = floor($info[1]*$rate); //计算出缩放后的高度
$des_im = imagecreatetruecolor($maxWidth,$maxHeight); //创建一个缩放的画布
imagecopyresized($des_im,$im,0,0,0,0,$maxWidth,$maxHeight,$info[0],$info[1]); //缩放
imagejpeg($des_im,'thumb.jpg'); //输出到thumb.jpg即为一个缩放后的文件

可以。

等比例缩放的方法是:

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

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



理论上来说,任何图片都可以等比缩放,但是不能保证缩放后的清晰度最简单的方法是在CSS里面不设置图片的宽度,只设置高度就做到等比缩放了

php图片等比例的缩放的方法:
1,上传地址随机生成,指向到不同的服务器,以达到每个服务器上传压力和存储负载均衡
2,上传服务器上有事件监听事件,有新文件上传,可以使用rsync等协议将文件推到其它服务器
3,通过CDN等方式在有需要的时候,将文件同步到其它服务器

//原文件,新文件,宽度,高度,维持比例//大图地址,新的图片地址名称,默认大小400*400
function ResizeImage($big_image_name, $new_name, $max_width = 400, $max_height = 400, $resize = 1){
$returnr['file']='';
$returnr['filetype']='';
if($temp_img_type = @getimagesize($big_image_name)) {eregi('/([a-z]+)$', $temp_img_type[mime], $tpn); $img_type = $tpn[1];}
else {eregi('.([a-z]+)$', $big_image_name, $tpn); $img_type = $tpn[1];}
$all_type = array(
"jpg" => array("create"=>"ImageCreateFromjpeg", "output"=>"imagejpeg" , "exn"=>".jpg"),
"gif" => array("create"=>"ImageCreateFromGIF" , "output"=>"imagegif" , "exn"=>".gif"),
"jpeg" => array("create"=>"ImageCreateFromjpeg", "output"=>"imagejpeg" , "exn"=>".jpg"),
"png" => array("create"=>"imagecreatefrompng" , "output"=>"imagepng" , "exn"=>".png"),
"wbmp" => array("create"=>"imagecreatefromwbmp", "output"=>"image2wbmp" , "exn"=>".wbmp")
); $func_create = $all_type[$img_type]['create'];
if(empty($func_create) or !function_exists($func_create))
{
return $returnr;
}
//输出
$func_output = $all_type[$img_type]['output'];
$func_exname = $all_type[$img_type]['exn'];
if(($func_exname=='.gif'||$func_exname=='.png'||$func_exname=='.wbmp')&&!function_exists($func_output))
{
$func_output='imagejpeg';
$func_exname='.jpg';
}
$big_image = $func_create($big_image_name);
$big_width = imagesx($big_image);
$big_height = imagesy($big_image);
if($big_width <= $max_width and $big_height <= $max_height)
{
$func_output($big_image, $new_name.$func_exname);
$returnr['file']=$new_name.$func_exname;
$returnr['filetype']=$func_exname;
return $returnr;
}
$ratiow = $max_width / $big_width;
$ratioh = $max_height / $big_height;
if($resize == 1) {
if($big_width >= $max_width and $big_height >= $max_height)
{
if($big_width > $big_height)
{
$tempx = $max_width / $ratioh;
$tempy = $big_height;
$srcX = ($big_width - $tempx) / 2;
$srcY = 0;
} else {
$tempy = $max_height / $ratiow;
$tempx = $big_width;
$srcY = ($big_height - $tempy) / 2;
$srcX = 0;
}
} else {
if($big_width > $big_height)
{
$tempx = $max_width;
$tempy = $big_height;
$srcX = ($big_width - $tempx) / 2;
$srcY = 0;
} else {
$tempy = $max_height;
$tempx = $big_width;
$srcY = ($big_height - $tempy) / 2;
$srcX = 0;
}
}
} else {
$srcX = 0;
$srcY = 0;
$tempx = $big_width;
$tempy = $big_height;
} $new_width = ($ratiow > 1) ? $big_width : $max_width;
$new_height = ($ratioh > 1) ? $big_height : $max_height;
if(function_exists("imagecopyresampled"))
{
$temp_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($temp_image, $big_image, 0, 0, $srcX, $srcY, $new_width, $new_height, $tempx, $tempy);
} else {
$temp_image = imagecreate($new_width, $new_height);
imagecopyresized($temp_image, $big_image, 0, 0, $srcX, $srcY, $new_width, $new_height, $tempx, $tempy);
}
$func_output($temp_image, $new_name.$func_exname);
ImageDestroy($big_image);
ImageDestroy($temp_image);
$returnr['file']=$new_name.$func_exname;
$returnr['filetype']=$func_exname;
return $returnr;
}

 在PHP网站开发过程中,如果你建立的网站涉及大量的图片处理,必然涉及到图片上传,缩放,而如何保持图片不失真,是很多初级PHP网站开发者比较头疼的一件事,今天David就和大家分享一下如何进行图片缩放。使用之前你需要下载安装GD库,以支持PHP图片处理。下面我们结合代码讲解具体的PHP图片缩放处理的思路。 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56function 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("imagecopyresampled"))
{
$newim = imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
}
else
{
$newim = imagecreate($newwidth,$newheight);
imagecopyresized($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图片处理中如何对图片进行压缩并保持不失真的函数说明,有疑问或者好的建议欢迎给我留言,下次我将分享在PHP网站开发建设完成后,由于图片目录没有规划好,我们该如何对图片进行迁移的思路。


如何在photshp中把照片设定成352×288像素的大小
一.新建(ctrl+N)二.将图象大小按照你的比例输入进去,单位换成像素,分辨力自定,依次模式选为RGB的背景色!OK~三.使用移动工具,将您要做的图拉入您设置好的新图层中去,用自由变换(ctrl+T)来调动你需要的大小比例~`您觉得可以了~回车确定就可以了。四.用工具栏中图层下拉的选项中选择合并整...

自定义HP 4411S开机画面步骤
然后取消下面的约束比例(非常关键)更改图片宽度到1024 你会发现你的图变得压扁了,那就对了,开机会按照这个比例还原回去 最后存储为24位的BMP格式图片 4.将图像保存在HP_TOOLS分区中,文件路径和名称是"Hewlett-Packard"Logo"Hplogo.bmp。5.重新启动系统。6.按F10键进入F10设置选项菜...

惠普显示屏怎么调节画面比例
由于您的提问中包含信息较少,无法具体判断问题,建议您提供机器的具体型号及问题的详细描述,登录hp网络在线聊天室www.hp.com.cn\/chat就您的问题进行进一步咨询。希望以上回复能够对您有所帮助。

神舟笔记本电脑HP530壁纸用多大壁纸
1280x800像素1152 x 864 像素 1280 x 720 像素 1280 x 768 像素 1280 x 960 像素 1280 x 1024 像素,基本大部分图片都这个比例的。

扫描仪有一个调整比例选项,可以放大150%,请问对印刷有影响吗,我用的6...
没有影响,那个调整比例不是光学的放缩。印刷大图??多大的图??hp-m1213n这个扫描仪是a4的,所以想扫描后的印刷大图,首先要看原图的质量,如果原图本身就是印刷品或放大后质量不好的,那么印刷大图的话,肯定效果也不会好。假设原图用600dpi扫描后,还非常精细,那么理论上可以印刷150dpi精美的大图...

HP L1706VHP L1706V详细参数
HP L1706V详细参数这款显示器的基本规格如下:屏幕尺寸: 17英寸,提供清晰的视觉体验。屏幕比例: 5:4,适合处理文档和图片。最佳分辨率: 1280x1024@60Hz,保证图像细腻度。动态对比度: 500:1,使色彩层次更为鲜明。黑白响应时间: 8ms,快速响应速度减少视觉延迟。在显示参数方面:点距: 0.264mm,保证...

hp1050打印照片一定会有底部的大量白边不能打印是什么问题
拍出来的照片长宽比例是4:3,而通常相纸的长宽比例是3:2。长宽比例为4:3的矩形放在3:2的矩形里,肯定是会留出空白的。你可以用ACD自带的编辑工具稍微裁剪一下,裁到大致与相纸的长宽比例相同,打印出来就不会有空白。其实有时也不必太纠结,把白边裁掉就好了,虽然我知道相纸挺贵的……...

Hp1005打印机复印时自动放大是什么原因
1)请您按一下ok键 2)方向键找到copy setup,按ok键确认按进去 3)方向键找到Def.reduce\/Enlrg,按ok键确认按进去 4)使用方向键调整实际要复印的大小,按ok键确认选 或者直接对打印机恢复出厂也行,在打印机面板,按ok键进入,向左键找到service,按ok进入,显示restore defaults按ok即可。

关于hp打印机打印图片只打印一半的解决方法。
以Windows7系统为例,将打印的尺寸设置为A4大小,步骤如下:1、打开点击,点击进入控制面板,如图所示。2、进入控制面板之后,找到设备和打印机,点击进入,如图所示。3、进入设备和打印机之后,找到打印的打印机,如图所示。4、鼠标右键打印机,选择进入打印首选项,如图所示。5、进入打印首选项之后,点击...

HP1112打印机,打印照片总是缺一截,不完整,该如何解决?
选择打印,在打印预览时,有个页面设置--页边距\/页眉页脚,把页脚设置一下,预览看下面觉得合适,再打印就行了

千阳县17553232878: php图片可以等比例的缩放吗 -
颛樊奥洛: PHP中图片等比缩放的实例,需要的朋友可以参考一下 //图片的等比缩放//因为PHP只能对资源进行操作,所以要对需要进行缩放的图片进行拷贝,创建为新的资源$src=imagecreatefromjpeg('a.jpg');//取得源图片的宽度和高度$size_src=...

千阳县17553232878: 如何实现php图片等比例缩放 -
颛樊奥洛: $imgsrc=$image_name;$imgdst=$image_name; list($width,$height,$type)=getimagesize($imgsrc); $new_width = ($width>600?600:$width)*0.9; $new_height =($height>600?600:$height)*0.9; $giftype=check_gifcartoon($imgsrc); $image_wp=...

千阳县17553232878: 求PHP上传图片并等比例缩小图片的方法??
颛樊奥洛: function upload($photo){ $num=1024*200; if($photo['size']&gt;$num){ return false; } $uploaddir = '../images/'; $piece = explode('.',$photo['name']); $uploadfile = $uploaddir . md5($piece[0]).'.'.$piece[1]; $result = move_uploaded_file($photo['tmp_...

千阳县17553232878: PHP图像处理的 -
颛樊奥洛: //图片的等比缩放//因为PHP只能对资源进行操作,所以要对需要进行缩放的图片进行拷贝,创建为新的资源$src = imagecreatefromjpeg('a.jpg');//取得源图片的宽度和高度$size_src = getimagesize('a.jpg');$w = $size_src['0'];$h = $size_src['1'];...

千阳县17553232878: php等比缩放图片,就是只按宽度缩小图片,当图片宽度大于750时就缩小到750 高度不用管 跟着宽度缩就行了 -
颛樊奥洛: 首先说一下思路,首先你要判断图片的宽度,这需要用到一个函数,个人比较喜欢用getimagesize() 其次是等比例绽放,需要用到imagecopyresized(当然还有其他函数) 注意:我这里用到的是gd库 实现: 写一个函数或者类都行,我这里就...

千阳县17553232878: php 如何将上传的图片按比例缩放并存在服务器里 -
颛樊奥洛: 方法1,上传地址随机生成,指向到不同的服务器,以达到每个服务器上传压力和存储负载均衡2,上传服务器上有事件监听事件,有新文件上传,可以使用rsync等协议将文件推到其它服务器3,通过CDN等方式在有需要的时候,将文件同步到其它服务器

千阳县17553232878: php 这个等比例我一直很晕,求解释
颛樊奥洛: 公式 是 a/b=c/d 同等于 a*d = b*c 你这个 代码 只适用于 正方形的相框 . 比如 相框是 100 X 100 宽高 在 有 你的图片是 800 X 600 那你想想看 如果要把这个图片 缩小放进 这个相框的话 应该是 把 宽度 800 缩小到 100 所以宽度是不用计算 直接等...

千阳县17553232878: 随便下载一张图片,使用PHP将图片缩放到原来的1/2 -
颛樊奥洛: //如果是JPG格式,则生成一个同比例的缩小图 $file="xxx.jpg"; $extend_name=strtolower(substr(strrchr($file,"."),1)); if($extend_name=='jpg'){ $image = imagecreatefromjpeg($full_name);//取原图的数据 } //如果是gif格式,则生成一个同比例...

千阳县17553232878: 如何用php上传的图片防止变形 - 技术
颛樊奥洛: 解决办法有:1.在上传时设置截图机制,jquery可以很容易实现,网上有代码,google.2.标记中只设定图片长或宽的一个指标,另一个指标就会自动等比例缩放.(前提是图片的长和宽都用PS处理过).3.PS每个图和缩略图.

千阳县17553232878: php图片上传功能(专业的进)
颛樊奥洛: if ($_FILES) { $valid = Validation::factory($_FILES) ->rule('avatar', 'Upload::valid') ->rule('avatar', 'Upload::not_empty') ->rule('avatar', 'Upload::size', array(':value', Kohana::$config->load('upload.image.size'))) ->rule('avatar', 'Upload::type', array(':value', ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网