PDA

View Full Version : حرفه ای: تغیر اسم و فرمت عکس وذخیره ان در php



dotek1
دوشنبه 15 مهر 1392, 12:02 عصر
با سلام ! من قبلا یک تایپیک زده بودم در این سایت ولی کسی اصلا یک جوابم بهم نداد امیدوارم اینبار یه نفر کمکم کنه !

بنده یک سیستم اپلود شکلک دارم که مدیر با ان یک شکلک اپلود میکنه و یک کد هم به ان میده واین کد وادرس شکلک در دیتابیس ذخیره میشه ! حالا میخوام کاری باهاش کنم هر عکسی که مدیر اپلود کرد فرمتش به به gif تبدیل بشه وهمچنین دیگه خودش نتونه کد بزاره رو شکلک خوده فایل خود کار طبق یه فرمولی به شکلک خود کار کد بده و شکلک را با اسمه همان کد در پوشمون ذخیره کنه ! مثلا کده همه شکلک ها اینطوری باشن تو پرانتز (m1) بعد شکلک بعدی رو کده (m2) بده واینطوری ذخیره کنه در پوشمون(m1).gif ذخیره کنه !

ایم کد های من میخوام ببینم چطوری باید تغییرش بدم اگه میشه کمک کنید ممنون میشم
<?php

if (isset ( $_POST["uping"])){
$khata = false ;
$scode = $_POST["smilecode"];
$snams = $_FILES["uploadedfile"]["name"];
if ($snams == ""){
$khata = true ;
}
if ($scode == ""){
$khata = true ;
}
if ($khata == false ) {

$rchcker = mysql_connect("localhost",$dbusername,$dbpassword);
if (!$rchcker)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($dbname, $rchcker);
$query = "SELECT smileys_sign from smileys where smileys_sign='$scode'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0)
{
$khata = true ;
}
mysql_close($rchcker);
}

if ($khata == false ) {
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["uploadedfile"]["name"]));
if ( in_array($extension, $allowedExts)) {
$target_path = "../smilies/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {

$etesal = mysql_connect("localhost",$dbusername,$dbpassword);
if (!$etesal)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($dbname, $etesal);
mysql_query("INSERT INTO smileys ( smileys_id, smileys_sign, smileys_img)
VALUES ('','$scode','smilies/$snams')");
mysql_close($etesal);


} else{
echo '<script> alert ("ERROR in Up"); </script>';
}
}
else
{
echo '<script> alert ("attemp ERROR"); </script>';

}
}

}

?>

من برای دادن اسم خود کار از rand(1,100) استفاده کردم نشد برای تغییر فرمتشم هر چی گشتم فاکشن پیدا نکردم

dotek1
دوشنبه 15 مهر 1392, 18:17 عصر
یعنی هیچ کس تو این سایت بلد نیست جواب ما رو بده ؟:متعجب: دفعه قبلم یه تایپیکم زدم یه نفر جواب نداد ! خون مار رنگی نیست چی کار میشه کرد :اشتباه::گریه:

mbf5923
دوشنبه 15 مهر 1392, 18:35 عصر
$imageObject = imagecreatefromjpeg($imageFile);
imagegif($imageObject, $imageFile . '.gif');
imagepng($imageObject, $imageFile . '.png');
imagewbmp($imageObject, $imageFile . '.bmp');
از GD هم میتونید استفاده کنید

dotek1
دوشنبه 15 مهر 1392, 19:32 عصر
$imageObject = imagecreatefromjpeg($imageFile);
imagegif($imageObject, $imageFile . '.gif');
imagepng($imageObject, $imageFile . '.png');
imagewbmp($imageObject, $imageFile . '.bmp');
از GD هم میتونید استفاده کنید

اینی که شما دادین ماله تبدیل به jpg هست خودم قبلا دیده بودمش ولی به کارم نیومد :ناراحت:

dotek1
دوشنبه 15 مهر 1392, 19:37 عصر
move_uploaded_file($_FILES["user-file"]["tmp_name"],"imgb/".$code.".gif"); با این دستور اصلا فایلو بدون فرمت ذخیره میکنه نمیدونم چرا :متفکر:

mbf5923
دوشنبه 15 مهر 1392, 20:01 عصر
این دستور از jpg به سه فرمت دیگه تبدیل میکنه مشکلی هم نداشته تا الان!

dotek1
دوشنبه 15 مهر 1392, 20:12 عصر
ببینید من از این کد برای تبدیل تمام عکس ها به jpg استفاده میکنم البته سایزشم تغییر میده این کدا !
function resize_image($file,$new_file,$new_width=50,$new_he ight=50)
{
if(!extension_loaded('gd')&&!extension_loaded('gd2')) {
die("GD is not installed!");
}
list($width,$height,$type)=getimagesize($file);
switch($type)
{
case 1:$img=imagecreatefromgif($file);break;
case 2:$img=imagecreatefromjpeg($file);break;
case 3:$img=imagecreatefrompng($file);break;
default:die($file.' فايل غيره مجاز!');
}
$ratio=(float)$height/$width;
$new_ratio=(float)$new_height/$new_width;
if($new_ratio > $ratio)
$new_height=round($new_width*$ratio);
else
$new_width=round($new_height/$ratio);
$new_img=imagecreatetruecolor($new_width,$new_heig ht);
if(($type==1)||($type==3)){
imagealphablending($new_img,false);
imagesavealpha($new_img,true);
$tmp=imagecolorallocatealpha($new_img,255,255,255, 127);
imagefilledrectangle($new_img,0,0,$new_width,$new_ height,$tmp);
}
imagecopyresampled($new_img,$img,0,0,0,0,$new_widt h,$new_height,$width,$height);
imagejpeg($new_img,$new_file);
}

حالا هر چی این کدا رو تغییر میدم به gif تبدیل نمیشه میخوام دیگه سایزشم تغییر نکنه چجوری ویرایش کنم ؟

mbf5923
دوشنبه 15 مهر 1392, 20:20 عصر
function resize_image($file,$new_file,$new_width=50,$new_he ight=50)
{
if(!extension_loaded('gd')&&!extension_loaded('gd2 ')) {
die("GD is not installed!");
}
list($width,$height,$type)=getimagesize($file);
switch($type)
{
case 1:$img=imagecreatefromgif($file);break;
case 2:$img=imagecreatefromjpeg($file);break;
case 3:$img=imagecreatefrompng($file);break;
default:die($file.' فايل غيره مجاز!');
}
$ratio=(float)$height/$width;
$new_ratio=(float)$new_height/$new_width;
if($new_ratio > $ratio)
$new_height=round($new_width*$ratio);
else
$new_width=round($new_height/$ratio);
$new_img=imagecreatetruecolor($new_width,$new_heig ht);
if(($type==1)||($type==3)){
imagealphablending($new_img,false);
imagesavealpha($new_img,true);
$tmp=imagecolorallocatealpha($new_img,255,255,255, 127);
imagefilledrectangle($new_img,0,0,$new_width,$new_ height,$tmp);
}
imagecopyresampled($new_img,$img,0,0,0,0,$new_widt h,$new_height,$width,$height);
imagejpeg($new_img,$new_file);
$imageObject = imagecreatefromjpeg($new_file);
imagegif($imageObject, $new_file . '.gif');
}

mbf5923
دوشنبه 15 مهر 1392, 20:43 عصر
این کد سایز عکس رو تغییر نمیده و فقط تغییر فرمت میده

<?php
function resize_image($file,$new_file)
{
$imageObject = imagecreatefromjpeg($file);
imagegif($imageObject, $new_file . '.gif');
}


resize_image('imagesource.jpg','nameoftarget');

?>

mbf5923
دوشنبه 15 مهر 1392, 20:54 عصر
برای اینکه بکگراند عکسهاتون transparent بشن

function resize_image($file,$new_file)
{
$imageObject = imagecreatefromjpeg($file);
$white = imagecolorallocate($imageObject, 255,255,255);
imagecolortransparent($imageObject, $white);
imagegif($imageObject, $new_file . '.gif');
imagepng($imageObject, $new_file . '.png');
imagewbmp($imageObject, $new_file . '.bmp');
}


resize_image('tst.jpg','test');
البته حتما باید بکگراندتون سفید باشه تا به transparent تبدیل بشه
در مورد اینکه بک بعضی عکس ها رو سیاه میکنه من موردی ندیدم تاحالا اگه عکس خاصی دارین که این اتفاق براش میفته ضمیمه کنید

dotek1
دوشنبه 15 مهر 1392, 20:58 عصر
خیلی ممنو از راهنمایتان خیلی لطف کردین حالا یه سوال دیگم داشتم اگر اون کد های اولیه که در پست اول تاپیک دادم توجه کنید گفتم میخوام هر فایلی که اپلود شد خود کار بهش یه کد بده
خوده اون فایلو با نام اون کدی که داده ذخیره کنه در پوشه و بعدم کد فایله اپلودی و ادرسه فایل بره تویه دیتابیس اینجوری میخوام کد بده خودکار (m1) (m3) ... اینطوری هم ذخیره بشه تو پوشمون (m1) .gif :متفکر:
با rand نشد

mbf5923
دوشنبه 15 مهر 1392, 21:07 عصر
خواهش میکنم
برای این کار به نظر من بهتره اولین عکس رو با نام m1.gif ذخیره کنید و در دیتابیس هم ذخیره بشه
در نامگذاری های بعدی باید آخرین نامی رو که در دیتابیس ذخیره کردین رو اول بدست بیارین و نام فایل جدید رو یکی بعد از اون بدین
از rand نمیشه استفاده کرد چون ممکنه تکراری بشه

dotek1
دوشنبه 15 مهر 1392, 21:14 عصر
خواهش میکنم
برای این کار به نظر من بهتره اولین عکس رو با نام m1.gif ذخیره کنید و در دیتابیس هم ذخیره بشه
در نامگذاری های بعدی باید آخرین نامی رو که در دیتابیس ذخیره کردین رو اول بدست بیارین و نام فایل جدید رو یکی بعد از اون بدین
از rand نمیشه استفاده کرد چون ممکنه تکراری بشه
خوب بنده هم میخواهم همین کار را بکنم ولی دقیقا نمیدونم باید چی کار کنم و از کجا شروع کنم میشه راهنمای بکنید ؟ اسمه row کد های شکلکا ما به فرض smileys_sign هست الان باید
یک متغییر تعریف کنیم که تیبل smiliey را با کوئری چک کند واخرین ای دی را چک کند ؟:متفکر: بعد بگید هر کدی بود جمع ببند و به یه متغییر دیگه بده که میشه همون کد دهی به شکلک ها ؟

mbf5923
دوشنبه 15 مهر 1392, 21:54 عصر
یه مثال براتون گذاشتم میتونید با توجه به این اون چیزی که میخواهید رو بنویسید