رفتن به مطلب

خطای پارامتر در php


پست های پیشنهاد شده

باسلام

من یه فایل content.php دارم با فرم زیر :

            <form action="upload.php"method="post" enctype="multipart/form-data">
             <label for="img">عکس را انتخاب کنید</label>
                <input type="file" id="img" name="img" accept="image/*">
                <input type="submit" value="آپلود" name="submit">
            </form>

 

داخلش که قصد دارم عکس انتخاب شده ارسال بشه به فایل upload.php  و اونجا با فانکشن imagefilter() عکس نگاتیو بشه ! ولی هر دفعه یه مشکل پیش میاد:

محتویات upload.php :

<?php
error_reporting(E_ALL ^ E_NOTICE);
$fileDir = $_POST['img'];
imagefilter("$fileDir",IMG_FILTER_NEGATE);

من خودم فک میکنم با متغییر filedir مشکل داره !

این دفعه آخری که امتحان کردم ارور  رو داد : Warning: imagefilter() expects parameter 1 to be resource, string given in C:\wamp64\www\farshad\upload.php on line 8

 

مشکل از کجاست باید چیکار کنم ؟

 

 

 

 

لینک به ارسال
در 9 ساعت قبل، ifarshad7 گفته است :

باسلام

من یه فایل content.php دارم با فرم زیر :


            <form action="upload.php"method="post" enctype="multipart/form-data">
             <label for="img">عکس را انتخاب کنید</label>
                <input type="file" id="img" name="img" accept="image/*">
                <input type="submit" value="آپلود" name="submit">
            </form>

 

داخلش که قصد دارم عکس انتخاب شده ارسال بشه به فایل upload.php  و اونجا با فانکشن imagefilter() عکس نگاتیو بشه ! ولی هر دفعه یه مشکل پیش میاد:

محتویات upload.php :


<?php
error_reporting(E_ALL ^ E_NOTICE);
$fileDir = $_POST['img'];
imagefilter("$fileDir",IMG_FILTER_NEGATE);

من خودم فک میکنم با متغییر filedir مشکل داره !

این دفعه آخری که امتحان کردم ارور  رو داد : Warning: imagefilter() expects parameter 1 to be resource, string given in C:\wamp64\www\farshad\upload.php on line 8

 

مشکل از کجاست باید چیکار کنم ؟

 

 

 

 

الان با اين کد فايل شما آپلود و ذخيره ميشه ؟؟؟؟؟
فکر می کنم مشکل اينجاست که فايلی برای ورودی تابع imagefilter وجود نداره ! مقدار 1 بر ميگرده به تابع imagefilter ! بجای اينکه آدرس فايل که بايد رشته باشه برای عکس داده بشه !

اوّل مطمئن بشيد که کد شما فايل عکس رو ذخيره کرده و آدرس فايل ذخيره شده رو به تابع می رسونيد

برای اينکه مطمئن بشيد مشکل از عملکرد تابع نيست ، که نيست
ميتونيد برای ورودی آدرس يه عکس رو بهش بديد و نتيجه رو مشاهده کنيد

برای آپلود شما يک نگاهی به لينک زير بنداز ...

https://www.w3schools.com/php/php_file_upload.asp

 

لینک به ارسال
در 2 ساعت قبل، damoon_zero گفته است :

الان با اين کد فايل شما آپلود و ذخيره ميشه ؟؟؟؟؟
فکر می کنم مشکل اينجاست که فايلی برای ورودی تابع imagefilter وجود نداره ! مقدار 1 بر ميگرده به تابع imagefilter ! بجای اينکه آدرس فايل که بايد رشته باشه برای عکس داده بشه !

اوّل مطمئن بشيد که کد شما فايل عکس رو ذخيره کرده و آدرس فايل ذخيره شده رو به تابع می رسونيد

برای اينکه مطمئن بشيد مشکل از عملکرد تابع نيست ، که نيست
ميتونيد برای ورودی آدرس يه عکس رو بهش بديد و نتيجه رو مشاهده کنيد

برای آپلود شما يک نگاهی به لينک زير بنداز ...

https://www.w3schools.com/php/php_file_upload.asp

 

الان من دقیقا همون کدی رو که داخل W3schools گفته بود رو اوکی کردم و فایل ها توی یه پوشه به اسم uploads/ آپلود میشن و در زمینه آپلود کاملا اوکیه

ولی الان به عنوان ورودی $target_file رو که انتخاب می کنم بازم ارور میده . یعنی مثلا پیغام میده که فایل اپلود شد ولی فیلتر رو اعمال نمیکنه و ارور میده

 

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["img"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["img"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["img"]["size"] > 50000000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["img"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["img"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

imagefilter("$target_file", IMG_FILTER_NEGATE);

 

این ارور رو میده

Warning: imagefilter() expects parameter 1 to be resource, string given in C:\wamp64\www\farshad\upload.php on line 46

 

الان دقیقا مشکلش چیه ؟ نمیفهمم ! تو php یخورده صفرکیلومترم :)

 

ویرایش شده توسط ifarshad7
لینک به ارسال
در 6 ساعت قبل، ifarshad7 گفته است :

الان من دقیقا همون کدی رو که داخل W3schools گفته بود رو اوکی کردم و فایل ها توی یه پوشه به اسم uploads/ آپلود میشن و در زمینه آپلود کاملا اوکیه

ولی الان به عنوان ورودی $target_file رو که انتخاب می کنم بازم ارور میده . یعنی مثلا پیغام میده که فایل اپلود شد ولی فیلتر رو اعمال نمیکنه و ارور میده

 


<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["img"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["img"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["img"]["size"] > 50000000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["img"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["img"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

imagefilter("$target_file", IMG_FILTER_NEGATE);

 

این ارور رو میده

Warning: imagefilter() expects parameter 1 to be resource, string given in C:\wamp64\www\farshad\upload.php on line 46

 

الان دقیقا مشکلش چیه ؟ نمیفهمم ! تو php یخورده صفرکیلومترم :)

 

مشکل چند جاست !
اوّل اينکه طبق راهنمايی که اين تابع داره شما اوّل قبل از اينکه اين تابع رو بکار ببريد بايد از يکی از توابع سازنده عکس تو PHP استفاده کنيد
مثل imagecreatetruecolor() يا imagecreatepng() يا imagecreatejpeg() بعدش اينو در نظر بگير که خروجی تابع اعمال فيلتر TRUE يا FALSE هست
يعنی فيلتر رو اعمال می کنه ولی نمايش نميده و فقط ميگه که اعمال شد يا نه ! True يعنی اعمال شد False هم ... ! فيلتر رو عکس بطور مستقيم اعمال ميشه !

مثلاً تو کد زير من يه عکس با نام 3.jpg به تابع دادم و تبدليش کردم به نگاتيو و خروجيش عکس 4.jpg که نگاتيو شده  :

 


<?php
$image = imagecreatefromjpeg('3.jpg'); // Voroodiye Aks Va tabdilesh be aks Ghabl az estefade too tabe ...

if($image && negate($image))
{
    echo 'Image Negative SHod';
    imagejpeg($image, '4.jpg', 100);
    imagedestroy($image);
}
else
{
    echo 'Failed Shod';
}

function negate($image)
{
    if(function_exists('imagefilter')) // check mikone bebine tabe imagefilter vojood dare ya na 
    {
        return imagefilter($image, IMG_FILTER_NEGATE); // age tabe vojood dasht voroodie akso ke dorost karde bood o bede be tabe ba Filteri ke mikhay !
    }

    return(true);
}



 

ویرایش شده توسط damoon_zero
لینک به ارسال
<?php
$image = imagecreatefromjpeg('3.jpg'); // Voroodiye Aks Va tabdilesh be aks Ghabl az estefade too tabe ...
imagefilter($image, IMG_FILTER_NEGATE);
imagejpeg($image, '4.jpg', 100);
imagedestroy($image);

کوتاه ، مختصر ، مفيد ...

لینک به ارسال

سلام

از پیام خطا معلومه که اولین آرگومان تابع imagefilter رو باید از نوع resource بهش بدین. لازمه که اولین آرگومان با یکی از توابع ایجاد image ایجاد شده باشه. متغیر  $fileDir که یک فایل عکس هست به درد این تابع نمی خوره و باید resource  عکس بهش بدین نه فایل عکس

لینک به ارسال
$target_file = $target_dir . basename($_FILES["img"]["name"]);

 

متغیر $target_file حاوی رشته string است در حالی که باید resource  باشه.

دوستمون damoon_zero هم به این مسئله اشاره کردن

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...