PDA

View Full Version : سوال: تصویر در تصویر کردن؟؟؟



future2010
چهارشنبه 26 آبان 1389, 00:56 صبح
سلام خدمت دوستان گرامی
سوالم در مورد گرافیگ در پی اچ پی هست

میخوام اندازه عکسی که قرار آپلود بشه در یه حد معینی باشه
مثلا 200 در 200 و اگه یه وقت مثلا عکس 220 در 200 آپلود شد پی اچ پی بصورت اتوماتیک تصویر رو تغییر اندازه بده حالا یا با کشیدن و فشرده کردن و یا با بریدن
این از این


و دیگه اینکه میخوام چطور میشه در پی اچ پی عکسی در در عکس دیگر ادغام کرد
مثل حالت لایه در فتوشاپ
من میخوام لوگوی سایت در همه عکسایی که آپلود میشه درج بشه


از راهنمایی دوستان و اساتید محترم قبلا ممنون و سپاسگزارم

funpatogh
چهارشنبه 26 آبان 1389, 01:06 صبح
سوال اول طول و عرض رو بگیرید

<?php
list($width,$height)=getimagesize("image.gif");
?> توی یک if چک کنید که از چیزی که میخوای بیشتر هست یا خیر اگر بیشتر بود با تابع imagecopyresampled تغییر سایز بدهید
اما سوال دوم از تابع imagecopymerge استفاده کنید

binyaft
چهارشنبه 26 آبان 1389, 10:16 صبح
میخوام اندازه عکسی که قرار آپلود بشه در یه حد معینی باشه
کد کامل :
http://www.9lessons.info/2009/03/upload-and-resize-image-with-php.html

و دیگه اینکه میخوام چطور میشه در پی اچ پی عکسی در در عکس دیگر ادغام کرد

search : PHP watermark script

future2010
چهارشنبه 26 آبان 1389, 15:37 عصر
search : PHP watermark script


من برای وترمارک چندتا کد پیدا کردم
خیلی خوب هست
اما مشکلی که من باهاش دارم اینه که تصویری که قراره روی عکس قرار بگیره پس زمینه نداره اما بعد از ادغام تصویر پس زمینه مشکی به خودش میگیره
تصویرم png هست. برای حل این مشکل راه حلی هست؟؟؟

funpatogh
چهارشنبه 26 آبان 1389, 15:50 عصر
من برای وترمارک چندتا کد پیدا کردم
خیلی خوب هست
اما مشکلی که من باهاش دارم اینه که تصویری که قراره روی عکس قرار بگیره پس زمینه نداره اما بعد از ادغام تصویر پس زمینه مشکی به خودش میگیره
تصویرم png هست. برای حل این مشکل راه حلی هست؟؟؟

یک نمونه براتون میگزارم که آدرس عکس رو با GET از URL میگیره و میتونید تغییر بدهید


<?php
header('content-type: image/jpeg');
$watermark = imagecreatefrompng('watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image = imagecreatefromjpeg($_GET['src']);
$size = getimagesize($_GET['src']);
$dest_x = $size[0] - $watermark_width - 5;
$dest_y = $size[1] - $watermark_height - 5;
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
?>

آدرس عکسی که روش مارک میخوره


$_GET['src']

future2010
چهارشنبه 26 آبان 1389, 16:22 عصر
ممنونم دوست عزیز
توی این فاصله با کمی سماجت بیشتر تونستم کد مناسبتری پیدا کنم
اینجا میذارم شاید به کار بیاد


<?php
$photo = imagecreatefromjpeg("3189.jpg");
$watermark = imagecreatefrompng("logo.png");
// This is the key. Without ImageAlphaBlending on, the PNG won't render correctly.
imagealphablending($photo, true);
// Copy the watermark onto the master, $offset px from the bottom right corner.
$offset = 10;
imagecopy($photo, $watermark, imagesx($photo) - imagesx($watermark) - $offset, imagesy($photo) - imagesy($watermark) - $offset, 0, 0, imagesx($watermark), imagesy($watermark));
// Output to the browser
header("Content-Type: image/jpeg");
imagejpeg($photo);
?>

future2010
چهارشنبه 26 آبان 1389, 17:17 عصر
تشکر مجدد از funpatogh (http://barnamenevis.org/forum/member.php?u=54136) عزیز
این کد آخری که قرار دادید جزء همون کدهایی هست که پس زمینه واترمارک رو سیاه میکنه اما کدی که پیدا کردم PNG-24 رو بطور کامل پشتیبانی میکنه

ضمنا طبق راهنمایی شما تونستم کد مناسبی برای تغییر سایز پیدا کنم که البته این رو با توجه به اطلاعاتی که اینجا ( http://php.net/manual/en/function.imagecopy.php ) بدست آوردم، نوشتم
اینجا قرار میدم تا شاید به کار دوستان بیاد


<?php
$src = imagecreatefromjpeg('pic.jpg');
$w = 250;
$h = 500;
$dest = imagecreatetruecolor($w, $h);
$src_w = (imagesx($src) / 2) - ($w / 2);
$src_h = (imagesy($src) / 2) - ($h / 2);
// Copy
imagecopy($dest, $src, 0, 0, $src_w, $src_h,$w, $h);

// Output and free from memory
header('Content-Type: image/jpeg');
imagejpeg($dest);

imagedestroy($dest);
imagedestroy($src);
?>