رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خروجی عکس
#1
با سلام خدمت شما.
من یه کلاس نوشتم که می‌خوام یه عکس رو به من خروجی بده.
کلاس زیر:
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;
    }
}


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

ممنون میشم کمک کنید.
پاسخ
تشکر شده توسط:
#2
اینو تست کنید:
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(); ?>" />
پاسخ
تشکر شده توسط:
#3
مهندس از بابت پاسخ دستتون درد نکنه. کد رو تست کردم.
وقتی که تست می‌کنم تو کل صفحه این خطا رو میده:
The image "experthome.ir" cannot be displayed because it contanis error

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

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

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

تو خروجی میاد.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان