【问题标题】:why imagecreatefromjpeg() function is not opening the file from the folder为什么 imagecreatefromjpeg() 函数没有从文件夹中打开文件
【发布时间】:2018-11-07 17:16:34
【问题描述】:

我想在上传后借助 imagecreatefromjpeg 函数调整图像文件的大小,但该函数无法从文件夹中访问文件,因为它会抛出错误,即**

imagecreatefromjpeg(): gd-jpeg: JPEG 库报告不可恢复 错误:在 D:\xampp\htdocs\resize\index.php

** 但是文件已上传,我编写了以下代码。

<form method="post" enctype="multipart/form-data">
    <input type="file" name="f1">
    <input type="submit" name="btn" value="Upload">
</form>

<?php
ini_set("memory_limit","256M");
if(isset($_POST['btn'])) 
{

    if(move_uploaded_file($_FILES['f1']['tmp_name'], "images/".$_FILES['f1']['name'])) 
    {          


        $filename = "images/".$_FILES['f1']['name'];


        $original_info = getimagesize($filename);
         $original_w = $original_info[0];
        $original_h = $original_info[1];
        echo "<img src =$filename>";
        if( ini_get('allow_url_fopen') ) {
          // it's enabled, so do something        

            $original_img = imagecreatefromjpeg($filename);         
            $thumb_w = 100;
            $thumb_h = 60;
            $thumb_img = imagecreatetruecolor($thumb_w, $thumb_h);
            $thumb_filename = "new.jpg";
            imagecopyresampled($thumb_img, $original_img,
                               0, 0,
                               0, 0,
                               $thumb_w, $thumb_h,
                               $original_w, $original_h);
            imagejpeg($thumb_img, $thumb_filename);
            imagedestroy($thumb_img);
            imagedestroy($original_img); 
        }       
    }   
}
?>

【问题讨论】:

标签: php


【解决方案1】:

您必须确定文件的类型。

<?php
    $type = exif_imagetype($filename);
    // types 1=>gif, 2=>jpg, 3=>png, 6=>bmp
    switch ($type) {
        case 1 : $img = imageCreateFromGif ( $src );break;
        case 2 : $img = imageCreateFromJpeg( $src );break;
        case 3 : $img = imageCreateFromPng ( $src );break;
        case 6 : $img = imageCreateFromBmp ( $src );break;
    }
    // or if you cannot use exif_imagetype
    // you can use getImageSize
    $type = getImageSize($filename);
    switch ($type) {
        case 'image/gif'  : $img = imageCreateFromGif ( $filename ); break;
        case 'image/jpeg' : $img = imageCreateFromJpeg( $filename ); break;
        case 'image/png'  : $img = imageCreateFromPng ( $filename ); break;
        case 'image/bmp'  : $img = imageCreateFromBmp ( $filename ); break;
    }
//// than you can create new file with resize or crop...

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多