Bir teknikerin web deneyimleri web.320volt Türkçe wordpress temaları, ip uçları, bilgiler, amatör web çalışmaları
Ana Sayfa » Web uygulamaları wordpress seo php grafik » Phuploader ve php watermark text modifikasyonu
Yazar: gevv Tarih: 29/12/2009 Etiketler: php resim watermark, php upload script, php watermark text, phuploader, resime yazı basma, water mark text
Nereden başlasam bilemiyorum durum biraz karışık
phuploader ücretsiz kullanımı kolay harika bir dosya gönderme upload script`i ilk keşfettiğim zaman paylaşmayı düşünüyordum ama kısmet olmadı şimdi gelişmiş modifiyeli halini tanıtacağım artık yüklenen resimlere yazı basabiliyor “php watermark text”

Beni kırmayıp bu özelliği ekleyen egonomik.com blogundan arkadaşım Caner`e çok teşekkürler sağolsun haika bir iş çıkarttı ortaya şimdi phupload uygulamasından bahsedeyim
Öncelikle index.php dosyasını notepad++ programı ile açın satır 134 ve 165 arası ayarların yapıldığı bölümdür
// Yüklenecek dosyanın en yüksek boyutu!
$max_file_size="1024";
// Çoklu yüklemede en yüksek boyut!
$max_combined_size="2048";
//Sayfada kaç tane yükleme kutusunun görüneceğini belirler
$file_uploads="2";
//Tarayıcının araç çubuğunda görünen isim
$websitename="phUploader 1.2";
// Yüklenen dosyaların ismini değiştirir "true: açık" "false: kapalı"
$random_name=true;
// İzin verilen dosya uzantıları
$allow_types=array("jpg","gif","png","zip","rar","txt","doc");
// Yüklemelerin yapılacağı klasör
$folder="./uploads/";
// /home/cesur/public_html/upload/uploads/
// Phupload`ın bulunduğu klasörün, bölümün tam adresi
$full_url="http://localhost/g2/uploads/";
// Sunucunun tam yolu "home/cesur/public_html/upload/uploads/" şeklinde
// boş bırakıncada script çalışıyor çalışmaz ise kullanırsınız
$fullpath="";
//Dosya göndermek için şifre belirlenen bölüm
$password="";
İşte ayarlar bu kadar gerekli değişiklikleri yaptıktan sonra dosyaları sunucunuza gönderiyorsunuz dosya klasörüne (uploads) chmod777 değerini veriyorsunuz
Canerin eklediği fonksiyonlar satır 71 – 128 arası
// Watermark fonksiyonu
function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile, $uzanti) {
list($width, $height) = getimagesize($SourceFile);
$image_p = imagecreatetruecolor($width, $height);
switch ($uzanti) {
case jpg:
$image = imagecreatefromjpeg($SourceFile);
break;
case gif:
$image = imagecreatefromgif($SourceFile);
break;
case png:
$image = imagecreatefrompng($SourceFile);
break; }
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);
$black = imagecolorallocate($image_p, 0, 0, 0);
$white = imagecolorallocate($image_p, 255, 255, 255);
$font = 'fonts/corbelz.ttf'; // Yazı biçimi
$font_size = 14; // Yazı büyüklüğü
// Copyright metninin altına siyah zemin rengi ekleyebilirsin "$black"
// imagefilledrectangle($image_p, 0, ($height-30) , $width, $height, $black);
// Burdaki "$width-15" değerini mıncıklayabilirsin, metin uzun olunca konum kayabiliyor.
$leftTextPos = (($width-15) - imagefontwidth($font_size)*strlen($WaterMarkText));
// Yazı ve gölge
imagettftext($image_p, $font_size, 0, $leftTextPos, $height-9, $black, $font, $WaterMarkText);
imagettftext($image_p, $font_size, 0, $leftTextPos-1, $height-10, $white, $font, $WaterMarkText);
if ($DestinationFile<>'') {
switch ($uzanti) {
case jpg:
imagejpeg ($image_p, $DestinationFile, 75); // jpg çıktı kalitesi %75 boyut küçülür
break;
case gif:
imagegif ($image_p, $DestinationFile, 75); // gif çıktı kalitesi %75 boyut küçülür
break;
case png:
imagepng ($image_p, $DestinationFile);
break;
}
}
else {
header('Content-Type: image/jpeg');
imagejpeg($image_p, null, 100);
}
imagedestroy($image);
imagedestroy($image_p);
}
// Watermark text
$watermark_text = $_POST['watermark'];
Satır 307 — 314 arası
$uzanti=get_ext($file_name[$i]);
$watermark_types = array("jpg","gif","png");
if(in_array($uzanti, $watermark_types)) {
$SourceFile = "$folder/$file_name[$i]";
$DestinationFile = "$folder/$file_name[$i]";
$WaterMarkText = "$watermark_text";
watermarkImage($SourceFile, $WaterMarkText, $DestinationFile, $uzanti); }
Son olarak satır 505 ve 508
<tr> <td class="table_body" width="20%"><b>Watermark:</b> </td> <td class="table_body" width="80%"><input type="text" name="watermark" size="29" value="Copyright © 2009" onclick="this.value=''" /></td> </tr>
Tarayıcıdaki görünümü

Script bu hali ile “Watermark:” bölümünde yazılı olanı (Copyright © 2009) resime yazıyor kullanıcı isterse yazıyı değiştirebilir bu şekilde kullanmak istemezseniz yani yazı sabir olsun kullanıcı değiştirmesin o zaman 505 ve 508 arası kodları silin satır 91`e aşağıdaki kodu ekleyin
$WaterMarkText = '320volt.com';
yazıyı istediğiniz gibi değiştirin genelde site adresi olur
Dosya yüklendikten sonra yüklendiği bölümün adresi tıklanabilir açık bağlantı olarak veriliyor

Tıklamayı iptal edebilirsiniz ya da bağlantıya başka şeyler ekleyebilirsiniz mesela img tagları ben forumda kullanmak için
[img]http://site.com/xxxx/uploads/xxx.jpg[/img]
şeklinde bağlantı çıktısı ayarladım bunun için satır 466 da bulunan kodu düzenleyebilirsiniz
Echo("<b>File #".$file.":</b> <a href=\"".$full_url.$file_name[$i]."\" target=\"_blank\">".$full_url.$file_name[$i]."</a><br /><br />\n");
Bağlantı tıklanabilir olmasın derseniz aşağıdaki kodları kullanın
Echo("<b>File #".$file.":</b> $full_url$file_name[$i]<br /><br />\n");
Bağlantıların içine farklı bir kod eklemek isterseniz (örnek img) aşağıdaki kodu kullanın
Echo("<b>File #".$file.":</b> [img]$full_url$file_name[$i][/img]<br /><br />\n");
Script güvenli olsada ek olrak koruma yapmakta fayda var uploads klasörüne boş bir index.html doyası ekleyin ayrıca izin verdiğiniz dosyaları belirledikten sonra birde .htaccess dosyası ile istenmeyen uzantılara kısıtlama getirin özellikle teklikeli olabilecek dosyalara
Upload klasörüne eklenecek olan .htaccess dosyasının içeriği
<FilesMatch "\.(inc|php)$"> deny from all </FilesMatch> <FilesMatch "\.(inc|htm)$"> deny from all </FilesMatch> <FilesMatch "\.(inc|html)$"> deny from all </FilesMatch>
Phupload uygulamasının modifiye hali: phupload-watermark-text.zip ayrıca Caner`in watermark ile ilgili yazılarına bakmanızda fayda var
teşekkür ediyorum kardeşim çok sağol.