PDA

View Full Version : سوال: بزرگ شدن تصویر



بهارجون
سه شنبه 04 تیر 1392, 09:52 صبح
سلام
من دارم یه سایت با php درست میکنم. که داخل هر کدوم از صفحاتم چند تا عکس نمایش میدم حالا می خوام وقتی روی هر عکسی کلیک میشه صفحه محو بشه و عکس بزرگ بشه;
کسی میتونه کمکم کنه؟

MMSHFE
سه شنبه 04 تیر 1392, 09:57 صبح
باید از پلاگینهای jQuery یا Javascript مثل Lightbox استفاده کنید.

بهارجون
سه شنبه 04 تیر 1392, 09:59 صبح
میشه واضح توضیح بدین؟؟؟؟؟ممنون

MMSHFE
سه شنبه 04 تیر 1392, 10:01 صبح
این کارها با Javascript و فریمورکهای مبتنی بر اون مثل jQuery انجام میشه ولی اگه نخواین خودتون کد بنویسید، میتونید از اسکریپتهای آماده مثل Lightbox و موارد مشابه دیگه استفاده کنید. بطور کلی ارتباطی به PHP نداره.

بهارجون
سه شنبه 04 تیر 1392, 10:02 صبح
کد نمونه ندارین برام بذارین؟

MMSHFE
سه شنبه 04 تیر 1392, 10:03 صبح
http://lokeshdhakar.com/projects/lightbox2
http://line25.com/articles/rounding-up-the-top-10-jquery-lightbox-scripts

بهارجون
سه شنبه 04 تیر 1392, 10:24 صبح
من دارم عکسها را از پایگاه داده میخونم href تگ a رو چی باید بذارم؟

MMSHFE
سه شنبه 04 تیر 1392, 10:29 صبح
آدرس عکس رو باید بگذارین. به کد زیر دقت کنید:

<a rel="lightbox" href="images/examples/image-1.jpg"><img alt="" src="images/examples/thumb-1.jpg"/></a>

بهارجون
سه شنبه 04 تیر 1392, 10:35 صبح
من عکسهایی رو که در هر صفحه نمایش میدم از بانک میخونم یعنی توی یه فولدر ذخیره نشدند!!!

MMSHFE
سه شنبه 04 تیر 1392, 10:41 صبح
فرق نمیکنه. URL رو از بانک بخونید و بجای href بگذارین.

بهارجون
سه شنبه 04 تیر 1392, 10:42 صبح
ببخشید که خیلی سوال میپرسم میشه نمونه بذارین:(

omidabedi
سه شنبه 04 تیر 1392, 10:54 صبح
نیگا شما عکسو که تو دیتابیس ذخیره نمیکنید که
شما یه عکسو توی یه فولدر ذخیره میکنید و ادرس عکسو مثلا
images/thumbnail/pic1.png
توی دیتابیس ذخیره میکنید
حالا شم میاید یه کوئری مینویسید و این ادرسو از دیتابیس میخونید و میریزید تو یک متغییر و اون متغییر رو میزارید جای href مثلا اینجوری


<a rel="lightbox" href="<?php echo $pic; ?>"><img alt="" src="images/examples/thumb-1.jpg"/></a>

که محتویات $pic میشه همون ادرس عکس هات

بهارجون
سه شنبه 04 تیر 1392, 10:56 صبح
نه آخه من خود عکسو ذخیره میکنم!!!!!!!!

MMSHFE
سه شنبه 04 تیر 1392, 11:05 صبح
این یک کد نمونه است:


<?php
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
$images = mysql_query('SELECT * FROM `images` ORDER BY `id`');
if($images && mysql_num_rows($images) > 0) {
while($image = mysql_fetch_assoc($image)) {
echo '<a href="images/' . $image['imagefile'] . '" title="' . $image['title'] . '"><img altsrc="thumbs/' . $image['thumbfile'] . '" /></a>' . PHP_EOL;
}
mysql_free_result($images);
}
mysql_close();
?>

MMSHFE
سه شنبه 04 تیر 1392, 11:07 صبح
نه آخه من خود عکسو ذخیره میکنم!!!!!!!!
خوب این روش از اساس اشتباهه چون حجم دیتابیس بی دلیل بالا میره و برای نمایش هم باید دوباره دست به دامن GD بشین تا تصویر رو با فرمت قابل نمایش، توی صفحه نشون بده. بهتره چنین کاری نکنید و تصویر توی پوشه باشه و آدرس رو توی دیتابیس بگذارین.

بهارجون
سه شنبه 04 تیر 1392, 11:25 صبح
من تصویر رو با نوع داده blob ذخیره کردم از این کدی هم که برام گذاشتین ممنونم اما نتونستم ازش استفاده کنم

MMSHFE
سه شنبه 04 تیر 1392, 11:34 صبح
خوب من هم که گفتم روش شما کاملاً اشتباهه. معایب روش شما:
1- عدم امکان اصلاح عکس بدون بازنویسی دیتابیس
2- حجم بالای عکس بدلیل ذخیره شدن بدون فشرده سازی (مثلاً یک عکس 800 در 600 با عمق تصویر 32 بیت، توی دیتابیس 15,360,000 بایت فضا اشغال میکنه یعنی بیش از 14.5 مگابایت که همین تصویر با فرمت jpg. و فشرده سازی مناسب، حدود 20 کیلوبایت میشه).
3- سرعت دیتابیس رو پایین میاره
4- توی نمایش و استفاده از عکس برای کارهای مختلف هم مشکلات زیادی خواهید داشت.
با این همه، دلیل اصرارتون بر استفاده از روش خودتون رو نمیدونم.

بهارجون
سه شنبه 04 تیر 1392, 11:37 صبح
هیچ روشی وجود نداره که بشه از همین پلاگین lightbox استفاده کرد اما عکس رو از توی دیتابیس خوند؟

MMSHFE
سه شنبه 04 تیر 1392, 11:40 صبح
بعید میدونم روشی وجود داشته باشه. مگه اینکه یک کار کنید: آدرس href رو به یک صفحه PHP بدین که ID تصویر رو میگیره و از دیتابیس میخونه و با GD نمایش میده. یعنی خروجی اسکریپت PHP شما، تصویره (با تنظیم Headerها)

بهارجون
سه شنبه 04 تیر 1392, 11:48 صبح
این کار رو کردم اما از GD نمیدونم چه جوری باید استفاده کنم؟

MMSHFE
سه شنبه 04 تیر 1392, 12:24 عصر
شما تصویر توی دیتابیس رو چطوری میخونید و نمایش میدین؟ همون کار رو توی فایل PHP انجام بدین که ID رو با روش GET میگیره و تصویر رو از دیتابیس در میاره و نشون میده و آدرس اون صفحه رو توی href بگذارین.

بهارجون
سه شنبه 04 تیر 1392, 12:28 عصر
من برای نمایش عکسها این تگ رو مینویسم
echo "<img SRC=\"../page/getimage.php? id=$image_id\" class=' txt=$des' style='width:150px; height:250px; padding-left:25px; padding-top:10px' />";
اما حالا که href رو برابر این صفحه قرار میدم کاراکتر نامفهوم نشون میده.

MMSHFE
سه شنبه 04 تیر 1392, 12:34 عصر
نه یک فایل دیگه باید درست کنید و توی اون فایل، علاوه بر کدی که توی getimage.php نوشتین، این دستور رو هم بگذارین:

header('Content-Type: image/jpeg');
و آدرس اون فایل رو بدین.

بهارجون
سه شنبه 04 تیر 1392, 12:37 عصر
این ارور رو میده
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\kian_star\page\getimage.php:50) in C:\wamp\www\kian_star\page\getimage.php on line 53

MMSHFE
سه شنبه 04 تیر 1392, 12:54 عصر
اول فایل getimage.php دستور ;()ob_start و آخرش دستور ;()ob_end_flush رو بگذارین.