PDA

View Full Version : سوال: مشکل با کتابخانه GD (کمک فوری)



billgivz
چهارشنبه 24 خرداد 1391, 01:04 صبح
سلام

من میخوام یک متن روی عکس قرارا بدم با کتابخانه GD ، ولی عکس به من نشون نمیده !

phpinfo هم گرفتم میگه ، GD فعال هست !

کدش رو میزارم تو ضمیمه لطفا بررسی کنید.

saeidpsl
چهارشنبه 24 خرداد 1391, 04:06 صبح
بفرما :چشمک: این حتمآ جواب میده





function LoadGif($imgname)
{
/* Attempt to open */
$im = @imagecreatefromgif($imgname);
/* See if it failed */
if(!$im)
{
/* Create a blank image */
$im = imagecreatetruecolor (150, 30);
$bgc = imagecolorallocate ($im, 255, 255, 255);
$tc = imagecolorallocate ($im, 0, 0, 0);
imagefilledrectangle ($im, 0, 0, 150, 30, $bgc);
/* Output an error message */
imagestring ($im, 1, 5, 5, 'Error loading ' . $imgname, $tc);
}
return $im;
}
header('Content-Type: image/gif');

$img = LoadGif("images/test.gif");

imagegif($img);
imagedestroy($img);

MMSHFE
چهارشنبه 24 خرداد 1391, 09:46 صبح
کدتون مشکلی نداره. فقط فونت Tahoma رو کنار اسکریپت با همون اسمی که توی اسکریپت استفاده کردین کپی کنید.
موفق باشید.

billgivz
چهارشنبه 24 خرداد 1391, 10:23 صبح
کدتون مشکلی نداره. فقط فونت Tahoma رو کنار اسکریپت با همون اسمی که توی اسکریپت استفاده کردین کپی کنید.
موفق باشید.


ممنون از راهنمایی که کردین .



چطور میتونم عدد رو به صورت فارسی و متن فارسی روی عکس چاپ کنم ؟؟

billgivz
چهارشنبه 24 خرداد 1391, 10:26 صبح
کدتون مشکلی نداره. فقط فونت Tahoma رو کنار اسکریپت با همون اسمی که توی اسکریپت استفاده کردین کپی کنید.
موفق باشید.


با تشکر از شما.


gd تنظیمات خاصی برای افزایش کیفیت هم داره ؟

چون وقتی من یک عدد رو میزارم روی عکس یکم حاشیه هاش بد شکل در میاد !

MMSHFE
چهارشنبه 24 خرداد 1391, 10:52 صبح
اگه فرمت خروجی عکس png باشه، پارامتر دوم تابع imgepng رو null بگذارین و پارامتر سوم رو یک عدد بین 1 تا 9 که کیفیت رو مشخص میکنه (9 از همه بیشتره)
اما اگه فرمت خروجی عکس jpg هست، پارامتر دوم تابع imagejpeg رو null بگذارین و پارامتر سوم رو یک عدد بین 1 تا 100 که مشخص کننده کیفیت هست (100 از همه بیشتره)
البته در کل png کیفیتش از jpg بیشتره ولی طبیعتاً حجمش هم بالاتر میره.
نکته: اگه بخواین خروجی توی فایل ذخیره بشه، پارامتر دوم توابع فوق رو بجای null با یک رشته حاوی مسیر و اسم فایل موردنظر مقداردهی کنید.

billgivz
چهارشنبه 24 خرداد 1391, 12:12 عصر
ممنون از پاسخ خوب و کامل شما .

بنده یک عکس با فرمت png دارم با سایز 3508w در 4961h با رزولیشن 300 حجم عکس هم 4mb هست

هر کاری میکنم نشون نمیده !

ولی عکس های کم حجم رو نشون میده !!

واسه نمایش عکس با حجم بالا کدی وجود داره ؟

MMSHFE
چهارشنبه 24 خرداد 1391, 12:27 عصر
دوست عزیز باید Resolution رو کم کنید. یا اینکه توی php.ini خط memory_limit = 128M رو پیدا کنید و افزایش بدین تا حافظه ای که در اختیار PHP قرار میگیره زیاد بشه. یکبار هم Apache رو Restart کنید.
موفق بشید.

billgivz
چهارشنبه 24 خرداد 1391, 12:33 عصر
دوست عزیز باید Resolution رو کم کنید. یا اینکه توی php.ini خط memory_limit = 128M رو پیدا کنید و افزایش بدین تا حافظه ای که در اختیار PHP قرار میگیره زیاد بشه. یکبار هم Apache رو Restart کنید.
موفق بشید.

ممنون حافظه رو زیاد کردم درست شد.

MMSHFE
چهارشنبه 24 خرداد 1391, 12:50 عصر
علت این مشکل اینه که شما تصویری با ابعاد 3508x4961 دارین که PNG هم هست یعنی 32 بیتی (تصاویر PNG از کانالهای رنگی RGBA استفاده میکنن که میشه Red,Green,Blue,Alpha) که کانال آلفا برای شفافیت هست. درنتیجه تصویر شما در حافظه 3508*4961*32 یعنی 556,902,016 بیت یا تقریباً 500 مگابایت فضا اشغال میکنه که درسته در همه زمانها این حافظه مشغول نیست ولی درهرحال برای پردازش چنین تصویری اینقدر حافظه باید در اختیار مفسر PHP باشه. بنابراین توی کدنویسی حواستون به این موارد جانبی و تنظیمات PHP هم باشه. خیلی از موارد مشکل از کدها نیست.

billgivz
چهارشنبه 24 خرداد 1391, 16:39 عصر
رزولیشن عکس من 300 هست ولی وقتی اون رو با gd لود میکنم یا ذخیره میکنم میشه 72 !!

چون عکس رو میخوام چاپ کنم روی کاغذ ، نیاز به رزولیشن 300 دارم .

دستوری هست تا رزولیشن رو تغیییر نده و با خروجی dpi 300 بده بیرون (با احتساب اینکه از قبل عکس 300 dpi بوده) ؟؟

armsoftpc
چهارشنبه 24 خرداد 1391, 18:54 عصر
به نام خدا
با سلام
دوست عزیز اصلا توی وب رزولشین بیشتر از 72 نمیشه، اصلا چرا عکستون را می خواهید با gd برای چاپ انتخاب کنید ، خوب از فتوشاپ استفاده کنید.

billgivz
چهارشنبه 24 خرداد 1391, 19:10 عصر
به نام خدا
با سلام
دوست عزیز اصلا توی وب رزولشین بیشتر از 72 نمیشه، اصلا چرا عکستون را می خواهید با gd برای چاپ انتخاب کنید ، خوب از فتوشاپ استفاده کنید.

آخه من یکسری کد از دیتابس میخونم و روی عکس میزارم . اگه بخوام با فتوشاپ درست کنم 99 سال طول میکشه !

در ضمن این رو بگم من عکس 300 dpi رو به صورت معمولی نشون دادم (با دستور img) و بعدش save as کزدم و وقتی با فتوشاپ باز میکنم 300 dpi هست !

ولی نمیدونم داخل کتابخونه gd چرا 72 میکنه ! حتی زمان ذخیره با آدرس !

کسی دستور خاصی مد نظرش هست ؟؟

MMSHFE
چهارشنبه 24 خرداد 1391, 20:54 عصر
با GD نمیشه. باید از ImageMagick استفاده کنید.

billgivz
چهارشنبه 24 خرداد 1391, 23:14 عصر
با GD نمیشه. باید از ImageMagick استفاده کنید.

چرا میشه .

فایل در قالب dpi 72 بهت میده ولی با طول و عرض زیاد کافی اون رو ببری داخل فتوشاپ ابتدا به dpi 300 تبدیل کنی و بعد طول و عرض رو به حال عادی مثلا a3 تغییر بدی

اینطور با کیفیتی عکس اولی که a3 و dpi 300 بود هیچ فرقی نمیکنه .

من که مشکلم حل شد.

MMSHFE
چهارشنبه 24 خرداد 1391, 23:55 عصر
خوب این فایل دوست عزیز درهرحال 72dpi هست. اینکه به Photoshop وابسته بشه یعنی اینکه اسکریپت کارآمد نیست. ‌توی اینترنت دنبال ImageMagick بگردین تا ببینید چه کارهایی براتون میتونه انجام بده!