Resim Upload + Resize + Db ye kayıt
7
●2.646
- 26-04-2008, 20:26:46Üyeliği durdurulduhttps://www.r10.net/php/156276-kendi-...sunuyorum.html
Bu scripti ben yazdım Resmi DB ye yazıyor. İnceleyebilirsin. - 26-04-2008, 23:13:46Üyeliği durdurulduhemen php.netten kopyala yapıştır geliştiriyorum
upload kısmı basit form açıp php.net/move_upload_file
yapıyosunuz daha sonra
<?php
$im = imagecreatefromgif( 'test.gif' );
// or $im = imagecreatefromjpeg( 'test.jpg' );
$mw = 360; // max width
$mh = 360; // max height
$ow = imagesx( $im );
$oh = imagesy( $im );
if( $ow > $mw || $oh > $mh ) {
if( $ow > $oh ) {
$tnw = $mw;
$tnh = $tnw * $oh / $ow;
} else {
$tnh = $mh;
$tnw = $tnh * $ow / $oh;
}
} else {
// although within size restriction, we still do the copy/resize process
// which can make an animated GIF still
$tnw = $ow;
$tnh = $oh;
}
// the document recommends you to use truecolor to get better result
$imtn = imagecreatetruecolor( $tnw, $tnh );
// if the image has transparent color, we first extract the RGB value of it,
// then use this color to fill the thumbnail image as the background. This color
// is safe to be assigned as the new transparent color later on because it will
// be filtered by imagecopyresize.
$originaltransparentcolor = imagecolortransparent( $im );
if(
$originaltransparentcolor >= 0 // -1 for opaque image
&& $originaltransparentcolor < imagecolorstotal( $im )
// for animated GIF, imagecolortransparent will return a color index larger
// than total colors, in this case the image is treated as opaque ( actually
// it is opaque )
) {
$transparentcolor = imagecolorsforindex( $im, $originaltransparentcolor );
$newtransparentcolor = imagecolorallocate(
$imtn,
$transparentcolor['red'],
$transparentcolor['green'],
$transparentcolor['blue']
);
// for true color image, we must fill the background manually
imagefill( $imtn, 0, 0, $newtransparentcolor );
// assign the transparent color in the thumbnail image
imagecolortransparent( $imtn, $newtransparentcolor );
}
// copy/resize as usual
imagecopyresized( $imtn, $im, 0, 0, 0, 0, $tnw, $tnh, $ow, $oh );
imagegif( $imtn, 'test.thumbnail.gif' );
imagedestroy( $im );
imagedestroy( $imtn );
?>
şu kodu kendinize göre düzenleyin
dosya adresinide mysqle atmak karışık değil.
basit bölümleri atladım çünkü uygulama eklemeyi filan
denemişsiniz az çok bilginiz var sanırsam. - 26-04-2008, 23:58:33saol bunu gördüm denedim ama bu dbye yazıyor ama upload edemedim bi türlüYuqseLX adlı üyeden alıntı: mesajı görüntüle
şöyle anlatayım
<? include "ayar.php"; TabloAc(); require "eb.upload.php"; ?> <form id="form1" name="form1" method="POST" action="kaydet.php" ENCTYPE="multipart/form-data"> <table width="575" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="278"> </td> <td width="436"><table width="390" height="168" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td colspan="2">Başlık <input name="makale_baslik" type="text" value="" size="40" /></td> </tr> <tr> <td colspan="2">Kategori: <select name="kat_id"> <?php $iler2 = mysql_query("SELECT kat_id, kat_baslik FROM kategoriler ORDER BY kat_id asC"); while($yaz2 = mysql_fetch_array($iler2)) { echo "<option value=\"". $yaz2['kat_id'] ."\">". $yaz2['kat_baslik'] ."</option>"; } ?> </select></td> </tr> <tr> <td colspan="2"> <INPUT TYPE="file" name="resim"> </tr> <tr> <td colspan="2"> <textarea id="elm1" name="makale_metni" rows="18" cols="100" style="width: 80%"></textarea></td> </tr> <tr> <td width="217" align="center"><label> <input type="submit" value="GÖNDER" /> </label></td> <td width="219" align="center"><input type="reset" value="TEMİZLE" /></td> </tr> </table></td> </tr> <tr> <td colspan="2"><div align="center"><a href="index.php">ADMIN SAYFASI</a></div></td> </tr> </table> </form> <? TabloKapat(); ?><?php if( is_uploaded_file( $_FILES['upload']['tmp_name'] ) ) //gonderilen dosya temp kalsorüne taşınmış mı? { $img_data = getimagesize( $_FILES['upload']['tmp_name'] ); //resim datalarını oku if( $img_data['2'] != 1 || $img_data['2'] != 2 ) //1= gif 2 = jpg { ///dosya beklediğimiz formatta mı kontrol et $source = $_FILES['upload']['tmp_name']; //hedef dosya adı kullanılıyor olabilir //ona göre kullanılmayan bir isim yarat $dest1 = generateUniqeNameForProductImage( $_FILES['upload']['name'] ); $dest = "../devamed/upload/".$dest1; if( !move_uploaded_file( $source, $dest ) ) { $err .= "Dosya upload hatası KOD :1 <br />"; } else //resim büyükse küçüğünü oluştur { if( $img_data['0'] > 150 && $img_data['1'] > 150 ) { resize_img( "../devamed/upload/",$dest1 ); } } } else { $err .= "Sadece .jpg ve .gif formatlý resimleri upload edebilirsiniz. <br />"; } } else { $err .= "Dosya upload hatasý KOD :3 <br />"; } function generateUniqeNameForProductImage( $filename ) { return generateUniqeFileName( "../devamed/upload/", $filename ); } function generateUniqeFileName( $dir, $filename ) { $new_filename = $filename; do { if( file_exists( $dir.$new_filename ) ) { $clk = true; $alfabe="abcdefghijkmnpqrstuvwxyz23456789"; $temp = substr(str_shuffle($alfabe),0,9); $new_filename = $temp.$filename; } else { $clk = false; } }while( $clk ); return $new_filename; } ?>ben nerde yanlış yaptım
böyle hatamı bulmak ya da doğru olanların üzerinden gitmek daha kolay olur
- 27-04-2008, 00:27:48Üyeliği durdurulduarkadaşım
class.upload.php - verot.net
bu sınıfı incelemeni tavsiye ederim... İçinde dökümanı mevcut.. - 27-04-2008, 14:16:36Üyeliği durdurulduArkadaşımız resimleride mysqla yazmak istiyor. Db ye kayıt olucak.
Copy veya Move_uploaded normal upload yontemleridir.
Bir Örnek Yazayım:
<? if($_POST['yolla']){ $veri=$_POST['form_verisi']; //$_POST ile veriyi değişkenimize alalım. $data=fread(fopen($veri,"rb"),filsize($veri)); //Formdan Gelen Veriyi Okuyoruz. /* *Formdan Gelen Veriyi Okuduk. Simdi Bu Binary Veriyi Mysqla Yazdıralım. */ mysql_connect("localhost" , "kullanici" , "sifre"); mysql_select_db("Databaseniz"); $sql=mysql_query("insert into resimtablosu(resimverialanı) values('$veri')"); /* *Burada Sqlnin Çalıştırılıp Çalıştırılmadıgını Kontrol Ediyoruz. */ if($sql){ echo"Resim Veritabanına Başarı İle Yazıldı<br><br>"; echo"<a href=index.php><b><font color=red>Anasayfaya Dönmek İçin Tıklayın</font></b></a>"; } else{ echo"<font size=3 color=red><b>Bir Hata Oluştu!</b></font>"; } } else{ //Form buraya ?> <center>Mr.Kurtbey - Mysql'a Veri Yazma Formu<br> <form action="<?=$PHP_SELF?>" method="post"> Dosyayı Seçin:<input type="file" name="form_verisi"><br> <input type="submit" name=yolla> </form> </center> <? } ?>Ve simdi mysql databasemizde bu uplad formu için gerekli tabloları oluşturalım.
Mesela resimtablosu isminde bir tablo , resim_id ve resimveri ismindede 2 alan oluşturalım.
resim _id alanını AUTO_INCREMENT (otomatik id) yapalım.
resimverialanı alanını ise longblob yapalım.
Ve Verileri Mysql a yazan upload formumuz hazır.Bunu Siz Daha çok tablo ekleyerek geliştirebilirsiniz.
--------------------------------------------------------------
Formu yaptık. Şimdide bu mysqldeki resimleri çekip tekrar resim olarak okumak(göstermek istiyorsunuz).Mesela resimleri id numaralarına gore örneğin index.php?resim_id=1 gibi çekelim.
<? header("content-type: image/gif"); //Gösterecegimiz Resimin tipi if($resim_id){ mysql_connect("localhost" , "kullanici" , "sifre"); mysql_select_db("Databaseniz"); $sql=mysql_query("select resimverialanı from resimtablosu where resim_id=$resimid"); $resimcek=mysql_fetch_array($sql); //Resmi gösterelim. echo $resimcek['resimverialanı']; } else{ echo"Böyle Bir Resim Yok"; } ?>Açık bir şekilde anlatmaya çalıştım.Anlamayanlar Başlık Altında Sorabilir.
,
Resim Boyutlandırma içinse AhmetPasha arkadaşımızın verdiği kodları kullanabilirsiniz.
böyle hatamı bulmak ya da doğru olanların üzerinden gitmek daha kolay olur