Ana Sayfa > mysql, PHP > PHP & MySQL Resim Yükleme ve Yeniden Boyutlandırma

PHP & MySQL Resim Yükleme ve Yeniden Boyutlandırma

PHP ile MySQL kullanarak oluşturduğum, resimleri dosyaya yazarken resimlerin isimlerini veritabanına kaydeden bi script.Script ‘de ayrıca resimler yeniden boyutlandırılıp küçük halleride hem dosyaya hemde veritabanına yazılmakta.

İlk önce bilgisayarımızdan resimleri alacağımız formu oluşturuyoruz.Sayfanın adı gonder.php ‘ dir.

gonder.php

<form action=”resim_isle.php” enctype=”multipart/form-data” method=”post”>Yeni Resim Ekle

<input name=”kull_dosya” type=”file” />
<input type=”submit” value=”Gönder” />

</form>

Formumuzu oluşturduktan sonra sıra geldi asıl işlemi gerçekleştiren resim_isle.php sayfamıza;

resim_isle.php

$resim_kaynagi = $_FILES["kull_dosya"]["tmp_name"];
$resim_ismi = $_FILES["kull_dosya"]["name"];
$resim_turu = $_FILES["kull_dosya"]["type"];
$resim_boyutu = $_FILES["kull_dosya"]["size"];

//resim ismini değiştiriyoruz çünkü aynı isimle başka bir dosya yüklenebilir.Bu durumda eski dosyamızı kaybederiz.

$resim_uzantisi = substr($resim_ismi, -4);
$rasgeleisim = substr(md5(uniqid(rand())), 0, 12);
$resim_yeniismi = $rasgeleisim.$resim_uzantisi ;

//gonderdiğimiz dosyanın bilgilerini ekrana yazıyoruz

echo “Gönderdiğiniz Resmin Adı: : “.$resim_ismi.”";
echo “Gönderdiğiniz Resmin Yeni Adı : “.$resim_yeniismi.”";
echo “Gönderdiğiniz Resmin Boyutu : “.$resim_boyutu.”";

//dosyayı daha once sunucuda manuel olarak olusturduğumuz gonderilen_resimler adlı klasöre  gönderiyoruz.

$dosya_hedef = “gonderilen_resimler”;
$dosya_yukle = move_uploaded_file($resim_kaynagi, $dosya_hedef.’/’.$resim_yeniismi);

//Yüklediğimiz resmin küçük halini oluşturoruz.

$kucuk_resim = imagecreatefromjpeg($dosya_hedef.’/’.$resim_yeniismi);
$boyut = getimagesize($dosya_hedef.’/’.$resim_yeniismi);
$resimorani=112/$boyut[0];

$yeniyukseklik = $resimorani*$boyut[1];

$yeniresim = imagecreatetruecolor(“112″,$yeniyukseklik);
imagecopyresampled($yeniresim, $kucuk_resim, 0, 0, 0, 0, “112″, $yeniyukseklik, $boyut[0], $boyut[1]);
$hedefdosya = $dosya_hedef.”/”.$rasgeleisim.”_kucuk”.$resim_uzantisi;

imagejpeg($yeniresim,$hedefdosya,100);
$dosya_yukle2 = move_uploaded_file($resim_kaynagi, $hedefdosya);
$kucuk_yeniisim = $rasgeleisim.”_kucuk”.$resim_uzantisi ;

//dosyanın yüklenip yüklenmediğini kontrol ediyoruz.

echo ”<pre> ”;

if ($dosya_yukle){

echo “Dosya yüklendi…”;

echo “<img src=’”.$dosya_hedef.”/”.$kucuk_yeniisim.”‘><br>”;

}

else{

echo “Dosya Kaydedilemedi. Tekrar Deneyiniz…
“;

}

$ekleme_tarihi = date(“Y-m-d H:i:s”);

//Klasöre kaydettiğimiz dosyanın ismini ve tarih bilgisini veritabanına ekliyoruz.

mysql_select_db($db, $resim_sql);

$veri_ekle = “insert into resimler (r_adi, r_adi_minik, ekleme_tarihi) values (‘$resim_yeniismi’,'$kucuk_yeniisim’, ‘$ekleme_tarihi’)”;

if (mysql_query(“$veri_ekle”)){

echo “Resim Bilgisi Veri Tabanına BaÅŸarıyla Kaydedildi”;

}

else

{

echo mysql_error();

}

?>

Evet gönderme işlemini tamamladık.Şimdi MySql tablomuzu oluşralım.

resimler databasenin sql ‘i;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ “resimler” /*!40100 DEFAULT CHARACTER SET utf8 */;

USE “resimler”;

#
# Table structure for table ‘resimler’
#

CREATE TABLE /*!32312 IF NOT EXISTS*/ “resimler” (
“no” int(11) NOT NULL AUTO_INCREMENT,
“r_adi” varchar(50) COLLATE utf8_unicode_ci NOT NULL,
“r_adi_minik” varchar(50) COLLATE utf8_unicode_ci NOT NULL,
“ekleme_tarihi” datetime NOT NULL DEFAULT ’0000-00-00 00:00:00′,
PRIMARY KEY (“no”)
) AUTO_INCREMENT=10;

Categories: mysql, PHP Etiketler:,
  1. tuğçe ilter
    Ağustos 21, 2009, 8:26 am | #1

    her adım tek tek uyguladım ama 10 tane hata veriyor.
    Warning: move_uploaded_file(): Unable to access /images/803d465a9d83.jpg gibi hatalar.

    ne yapabilirim??

  2. hayatgarip
    Eylül 25, 2009, 10:28 pm | #2

    ilk once şunu söyleyeyim ki bu script windows ortamında çalışmaktadır.Eğer sunucunuz Linux ise upload yaptığınız dosyaya erişim haklarını kontrol etmenizi öneririm.

    eger hangi satırlarda hata verdiğini yazarsanız daha iyi yardımcı olabilirim.

  1. Henüz geridönüş yok.

Yorum yapın

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Değiştir )

Twitter picture

You are commenting using your Twitter account. Log Out / Değiştir )

Facebook photo

You are commenting using your Facebook account. Log Out / Değiştir )

Connecting to %s

Takip Et

Get every new post delivered to your Inbox.