【问题标题】:Image not saving into directory after cropping裁剪后图像未保存到目录中
【发布时间】:2014-01-07 05:26:20
【问题描述】:

我试图在裁剪到目录后保存裁剪的图像,但是当我单击裁剪按钮时没有任何反应。我从 2 天起就陷入了困境,请有人帮助我。 我收到这些错误

警告:imagecreatefromjpeg(public/image/) [function.imagecreatefromjpeg]:无法打开流:C:\wamp\www\ModuleEx.com\application\modules\admin\controllers\IndexController 中没有这样的文件或目录。 php 在第 64 行

警告:imagecreatefromjpeg(public/image/) [function.imagecreatefromjpeg]:无法打开流:C:\wamp\www\ModuleEx.com\application\modules\admin\controllers\IndexController 中没有这样的文件或目录。 php 在第 64 行

警告:imagejpeg() [function.imagejpeg]:无法打开“public/image/crop”进行写入:C:\wamp\www\ModuleEx.com\application\modules\admin\controllers\IndexController 中的权限被拒绝.php 在第 71 行

这是我的控制器代码

if(isset($_FILES['file']['name'])){ //user upload file
    $file_name = stripslashes($_FILES['file']['name']);
    $ext_idx = strrpos($file_name,".");
    if(!$ext_idx) //hide this if ur app can upload without ext
        echo "File invalid.";
    else{
        $ext_length = strlen($file_name) - $ext_idx;
        $extension = strtolower(substr($file_name,$ext_idx+1,$ext_length));
        //allowed extension
        $ext_list = array("pdf", "doc","jpg", "jpeg", "gif", "png");
        if(!in_array($extension, $ext_list))
            echo "System can't support your extension.";
        else{
            $size = (2500 * 1024); //2500 Kb
            $file_size=filesize($_FILES['file']['tmp_name']);
            if($file_size > $size)
                echo "File is oversize. Max 2500 Kb.";
            else{
                //change name
                $file_name = rand(10,1000).".".$extension;

                $file_obj="public/image/".$file_name;



                $copied = copy($_FILES['file']['tmp_name'], $file_obj);

                if(!$copied)
                    echo "Failed.";
                else 
                {

                    $file_data = array( 'file_name' => $file_name );


                    $this->view->file_obj=$file_obj;




                }
                }

            }
        }
    }

这是我的 phtml 代码。

if ($_SERVER['REQUEST_METHOD'] == 'POST')
 {
$targ_w = $targ_h = 150;
$jpeg_quality = 90;

 $src = 'file_obj';
$img_r = imagecreatefromjpeg($src);
 $dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

 imagecopyresampled($dst_r,$img_r,0,0,(int)$_POST['x'],(int)$_POST['y'],
 $targ_w,$targ_h,(int)$_POST['w'],(int)$_POST['h']);

 //header('Content-type: image/jpeg');
  imagejpeg($dst_r,'file_obj',$jpeg_quality);

   }


    ?>




 <html>
  <head>

   <script src="public/js/jquery.min.js"></script>
  <script src="public/js/jquery.Jcrop.js"></script>
   <script src="public/js/jquery.color.js"></script>
  <script type="text/javascript">


  $(function(){

  $('#cropbox').Jcrop({
aspectRatio: 1,
onSelect: updateCoords
 });

   });

   function updateCoords(c)
   {
  $('#x').val(c.x);
 $('#y').val(c.y);
 $('#w').val(c.w);
 $('#h').val(c.h);
 };

 function checkCoords()
  {
 if (parseInt($('#w').val())) return true;
 alert('Please select a crop region then press submit.');
 return false;
 };

  </script>


  <style type="text/css">
  #target {
   background-color: #ccc;
   width: 500px;
     height: 330px;
    font-size: 24px;
    display: block;
  }


  </style>


 <?=$this->headLink()->appendStylesheet('/public/css/demos.css');?>
 <?=$this->headLink()->appendStylesheet('/public/css/main.css');?>
 <?=$this->headLink()->appendStylesheet('/public/css/jquery.Jcrop.min.css');?>
</head>

<body>
   <form id="file_form" method="POST" enctype="multipart/form-data" action="" onsubmit="">
    <input type="file" name="file" />

     <input type="submit" name="submit"  value="Upload"/><br/></br>
     <img id="cropbox" src="<?php echo $this->file_obj?>" alt="Image" style="display: block; visibility: visible; width: 602px; height: 400px; border: medium none; opacity: 0.5;"/><br/>

        <input type="hidden" id="x" name="x" />
        <input type="hidden" id="y" name="y" />
        <input type="hidden" id="w" name="w" />
        <input type="hidden" id="h" name="h" />
        <input type="submit" value="Crop Image" class="btn btn-large btn-inverse" />
  </form>


</body>
</html>

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    试试这个:

        $names = $_FILES["img"]["name"];
        $tmp = $_FILES["img"]["tmp_name"];
        $upload_dir = './images';
        $move=move_uploaded_file($tmp, "$upload_dir/$names");
        $a="./images/".$names;
        list($width, $height) = getimagesize($a);
        $newwidth = "120"; 
        $newheight = "100";
        $thumb = imagecreatetruecolor($newwidth, $newheight);
        if($_FILES["img"]["type"]=="image/jpeg"){
          $source = imagecreatefromjpeg($a);
        imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
        imagejpeg($thumb, $a, 100);
        }
    

    【讨论】:

    • 感谢这段代码@ssk,但我仍然没有收到这样的文件或目录错误@这一行 list($width, $height) = getimagesize($a);
    • 那么问题仅出在您的图像路径上...您的文件是否已成功移动到公用文件夹?检查 $move.. if($move){echo "文件已移动";}else{echo "文件未移动";}
    • 是的,上传文件成功移动到 /public/image 文件夹后,但在我点击裁剪按钮选择裁剪区域后,裁剪的图像不会保存到该目录中。
    • 你在哪个平台上使用这个?检查文件权限..如果该图像文件不允许写入权限,则不会被裁剪..
    • 感谢您的链接,但 chmod 在 Windows 中不起作用 :(
    【解决方案2】:

    也许这会有所帮助。 *您的文件夹(公共/图像)或其路径具体存储在哪里?它是否也与您的 IndexController.php 位于同一目录中?

    这是我在文件夹中保存图像的代码: $path = "上传/";

    $actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext;
    $tmp = $_FILES['photoimg']['tmp_name'];
    if(move_uploaded_file($tmp, $path.$actual_image_name))
    {
        mysql_query("UPDATE lms_users SET userPic='$actual_image_name' WHERE userId='$_SESSION[email]'");                       
        echo "<img src='uploads/".$actual_image_name."'  class='preview'>";
    }
    else
    echo "failed";
    

    希望这会有所帮助。

    【讨论】:

    • 这是图片目录路径C:\wamp\www\ModuleEx.com\public\image
    • 这是控制器路径 C:\wamp\www\ModuleEx.com\application\modules\admin\controllers
    • 尝试在您的 IndexController.php 目录中创建一个 public/image 文件夹。您的系统/程序将在以下代码中搜索 public/image 以及您的 indexController.php:$file_obj="public/image/".$file_name;
    • 此代码或来源: 它是否也与您的 indexController.php 一起存储?如果不是,那么也尝试转移它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多