تالار گفتمان nCIS.ir

نسخه‌ی کامل: خروجی عکس
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام خدمت شما.
من یه کلاس نوشتم که می‌خوام یه عکس رو به من خروجی بده.
کلاس زیر:
class Image {
    
    /*
     * 
     */
    public function User($params = array()){
        $UserPicture = '1';//(isset($_GET['UserID']) ? '1' : '9');
        $ON = (isset($_GET['Status']) ? 'on' : 'off');

        $source = ImageCreateFromJPEG(Base::basePath().'Docs/User/'.$UserPicture.'.jpg');
        $destination = ImageCreateTrueColor(40, 50);
        ImageCopyResized($destination, $source, 0, 0, 0, 0, 40, 50, ImageSX($source), ImageSY($source));
        $watermark = ImageCreateFromPNG(Base::basePath().'images/Icon/On_'.$ON.'.png');
        ImageCopy($destination, $watermark, 1, 1, 0, 0, ImageSX($watermark), ImageSY($watermark));
        header('Content-Type: image/png');
        ob_start();
        ImagePNG($destination);
        $result = ob_get_clean();
        ImageDestroy($destination);
        ImageDestroy($watermark);
        ImageDestroy($source);
        return $result;
    }
}


حالا می‌خوام وقتی این متد رو اجرا می‌کنم خروجی به من تحویل بده. ولی وقتی اجرا می‌کنم کل صفحه مرورگر رو تبدیل به عکسی می‌کنه. باید چی کار کنم؟؟؟؟

ممنون میشم کمک کنید.
اینو تست کنید:
class Image {
     
    /*
     * 
     */
    public function User($params = array()){
        $UserPicture = '1';//(isset($_GET['UserID']) ? '1' : '9');
        $ON = (isset($_GET['Status']) ? 'on' : 'off');
 
        $source = ImageCreateFromJPEG(Base::basePath().'Docs/User/'.$UserPicture.'.jpg');
        $destination = ImageCreateTrueColor(40, 50);
        ImageCopyResized($destination, $source, 0, 0, 0, 0, 40, 50, ImageSX($source), ImageSY($source));
        $watermark = ImageCreateFromPNG(Base::basePath().'images/Icon/On_'.$ON.'.png');
        ImageCopy($destination, $watermark, 1, 1, 0, 0, ImageSX($watermark), ImageSY($watermark));
        ob_start();
        ImagePNG($destination);
        $result = ob_get_clean();
        ImageDestroy($destination);
        ImageDestroy($watermark);
        ImageDestroy($source);
        return 'data:image/png;base64,' . base64_encode($result);
    }
}

نحوه استفاده:
<img src="<?php echo $image->User(); ?>" />
مهندس از بابت پاسخ دستتون درد نکنه. کد رو تست کردم.
وقتی که تست می‌کنم تو کل صفحه این خطا رو میده:
The image "experthome.ir" cannot be displayed because it contanis error

خوب وقتی همین صفحه رو ذخیره می‌کنه با حالت html درست نشون می‌ده. مشکل از چی می‌تونه باشه؟
از render استفاده میکنید یا renderPartial ؟ دقت کنید که نباید هیچ محتوای دیگری توی خروجی باشه. حتی یه کارکتر اضافه هم باعث خراب شدن تصویر میشه.
کلاس همونه که ملاحظه کردین مهندس.
تو خروجی هم دقیقا کدی که می‌نویسم اینه:
echo Tag::empty('img', array('src' => $image->User()));

کد بالا تو یه فایل view هست.

در نهایت همه‌ی اینها توسط
render();

تو خروجی میاد.