content-type image/pjepg php_phpPHP创建创建jpg格式图片以及压缩图片(转)

其实是因为一些业务上的需求,所以需要对用户上传后的图片进行压缩,因为上传的图片比较大,显示的时候加载起来如果网速不给力的话就很吃力了,而且大图片也浪费空间,于是找了一下相关的资源,主要方法在开源中国上找到了:

然后,图片压缩后显示出来了,但是要保存,所以还需要进行处理,然后看到了另外一篇文章:

这里就将这篇文章转载回来了,具体原文如下:

imagejpeg() 从 image 图像以 filename 为文件名创建一个 JPEG 图像。image 参数是 imagecreatetruecolor() 函数的返回值。

1

bool imagejpeg ( resource image [, string filename [, int quality]] )

filename 参数为可选,如果省略,则原始图像流将被直接输出。要省略 filename 参数而提供 quality 参数,使用空字符串('')。通过 header() 发送 Content-type: image/jpeg 可以使 PHP 脚本直接输出 JPEG 图像。JPEG 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用。

quality 为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。默认为 IJG 默认的质量值(大约 75)。

程序示例

1

2

Header("Content-type: image/jpeg");

3

$im = imagecreatefromjpeg("./test.jpg");

4

Imagejpeg($im,'',20);

5

ImageDestroy($im);

6

?>

假如有如下需求,用户上传的图片,我需要将它的图片质量降低到70%左右,可以缺省 filename 参数,然后指定原始图片与quality的值即可。当然你可以指定第二个参数作为新生成图片的文件名。

01

02

// 图片的质量参数

03

$quality = 70;

04

05

if(isset($_FILES['watermarkee']) &&$_FILES['watermarkee']['error']==0)\

06

{

07

$original =$_FILES['watermarkee']['tmp_name'];

08

// 创建原始图片

09

$resultImage = imagecreatefromjpeg($original);

10

11

// 定义生成的图片的名字

12

$target_name =date('YmdHis').'_'.preg_replace('`[^a-z0-9-_.]`i','',$_FILES['watermarkee']['name']);

13

$target = dirname(__FILE__).'/results/'.$target_name;

14

15

// 生成新图片

16

imagejpeg($resultImage,$target,$quality);

17

}

18

?>

这里谈一下 imagecreatefromjpeg() 函数。

表单上传至服务器后,会产生$_FILES数组。如果数据有效。

01

$_FILES['userfile']['name']

02

// 客户端机器文件的原名称

03

04

$_FILES['userfile']['type']

05

// 文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值

06

07

$_FILES['userfile']['size']

08

// 已上传文件的大小,单位为字节

09

10

$_FILES['userfile']['tmp_name']

11

// 文件被上传后在服务端储存的临时文件名

12

13

$_FILES['userfile']['error']

14

15

$_FILES['userfile']['tmp_name']

16

// 临时文件已经可以作为有效的jpeg文件进行处理了。但最终通过image一系列函数处理的图像,最终的存储是要移动至目标目录的

17

18

imagecreatefromjpeg($_FILES['userfile']['tmp_name'])// 即可生成有效的image资源

一段上传jpg图片,服务器端保存原图片和缩略图,并显示缩略图的方法。

01

02

// 保存文件缩略图

03

function thumbnail($filename,$newWidth,$imgName)

04

{

05

list ($width,$height ) =getimagesize ($filename );

06

$newHeight =$height / ($width /$newWidth);

07

$newImage = imagecreatetruecolor ($newWidth,$newHeight );

08

$oldImage = imagecreatefromjpeg ($filename );

09

imagecopyresampled ($newImage,$oldImage, 0, 0, 0, 0,$newWidth,$newHeight,$width,$height );

10

11

//输出jpeg图像

12

header ('Content-type: image/jpeg' );

13

imagejpeg ($newImage,$imgName, 99 );

14

//imagedestroy ( $filename );  //若不用于显示则不用该方法。

15

}

16

17

//jpg文件上传并显示缩略图

18

function uploadImageFiles()

19

{

20

$uploaddir =getcwd () ."/uploads/";

21

$uploadfile =$uploaddir .$_FILES ["upfile"] ["name"];

22

//global $uploadfile;

23

if ($_FILES ["upfile"] ["size"] > 5000000)

24

{

25

echo "";

26

}

27

else

28

{

29

if ($_FILES ["upfile"] ["type"] !="image/gif" and $_FILES ["upfile"] ["type"] !="image/pjpeg")

30

{

31

echo "";

32

}

33

else

34

{

35

$this->thumbnail ($_FILES["upfile"]["tmp_name"], 100,$uploaddir ."miniImg/" .$_FILES ["upfile"]["name"] );

36

if (move_uploaded_file ($_FILES ["upfile"] ["tmp_name"],$uploadfile ))

37

{

38

echo "文件上传成功。";

39

echo "";

40

}

41

}

42

}

43

}

44

?>

其实经过以上的学习后,我单独做了一个图片压缩的没什么问题,但是整合到我用的系统中时始终不行,为此还特地在OSC上发了帖子(依然是关于“PHP图片压缩的返回地址”问题):

最后也解决了,实际上很简单,还是没有好好读PHP的关于这个图片处理的手册,最后掉了一个imagedestory函数。

p.s. csdn这个功能不错,我直接覆盖上面的这篇文章,代码的格式什么的都一起过来了,很爽有木有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值