Resmi smf forumlarındaki ilk paylaşımım umarım öğrendikce devamı gelecek :) basit bir ip ucu olduğu için sanırım uygun kategori burası
Smf nin resim yüklemelerinde yazı alanına resim kodu ile ekleme yapmaması sebebiyle araştırıp kendimce çözüm bulduğum bir sorundu basit ama gelişmiş bir upload sirptini yazı alanına ekledim smf ile link dışında bir bağlantısı yok ama şimdilik iş görüyor
Bu iş için kullandığım Phuploader ve ek olarak eklenen php watermark resime yazı basma uygulamasından ve kullanım bilgilerini vereceğim
Sitenize göre düzenleyip uyguladıktan sonra aşağıdaki gibi bir şekil ortaya çıkacak :)
(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fimg19.imageshack.us%2Fimg19%2F5092%2F29805344.png&hash=f1632d242675464d4ebaa344d6e1ad2dfa3851ed)
(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fimg63.imageshack.us%2Fimg63%2F5255%2Fphpresimyazibasmaupload.png&hash=008a1e0e9a419cf6471f8994e260eb1600fbaab4)
Beni kırmayıp watermark text resimeyazı basma özelliğini ekleyen egonomik.com blogundan arkadaşım Caner (http://"http://www.egonomik.com/")`e çok teşekkürler sağolsun haika bir iş çıkarttı ortaya şimdi phupload uygulamasından bahsedeyim
Script Özellikleri
* Scipt yazarı: Scott Lucht (phphq.net (http://"http://www.phphq.net/scripts.php?p=free-scripts&id=1"))
* Veri tabanı, kurulum gerektirmez
* GPL lisanslı ücretsizdir (bedava :) )
* Yüklenecek dosyalara sınırlama getirebilirsiniz
* Yüklenecek dosya boyutunu belirleyebilirsiniz
* 1 ya da daha fazla dosya gönderimi yapılabilir
* İsterseniz dosyaları yeniden adlandırır
* İsterseniz dosya gönderimi için şifre koruması ekleyebilirsiniz
* Yüklenen resimlere yazı eklenir (watermark text)
Kurulum ve kullanım
Ö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
PHP ile resime yazı basma watermark text modifikasyonu
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ü
(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fimg253.imageshack.us%2Fimg253%2F4048%2Fphuploaderphpwatermarkt.png&hash=7a5d8bb0b64dd8ff3dd7474a4236c4afc5bd8bdc)
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 :)
İp uçları öneriler
Dosya yüklendikten sonra yüklendiği bölümün adresi tıklanabilir açık bağlantı olarak veriliyor
(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fimg253.imageshack.us%2Fimg253%2F5758%2Fphpuploadscriptwatermar.png&hash=035e36ba6a26af4393ed9786e04a7be9fd92754a)
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");
Yükleme sonrasında oluşturulan bağlantı
(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fimg191.imageshack.us%2Fimg191%2F4530%2F94084271.png&hash=87cccdfa7c82f7787ac97c74be1a354d009fd73b)
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 (http://"http://www.4shared.com/file/197990665/11d48df4/phupload-watermark-text.html%3Cbr%20/%3E") ayrıca Caner`in watermark ile ilgili yazılarına (http://"http://www.egonomik.com/tag/watermark/") bakmanızda fayda var
Bu uygulamayı konu açma bölümüne link olarak eklemek için tema dosyalarından post.template.php dosyasını açın
Bulun
// If the admin has enabled the hiding of the additional options - show a link and image for it.
if (!empty($settings['additional_options_collapsable']))
echo '
<tr>
<td colspan="2" style="padding-left: 5ex;">
<a href="javascript:swapOptions();"><img src="', $settings['images_url'], '/expand.gif" alt="+" id="postMoreExpand" /></a> <a href="javascript:swapOptions();"><b>', $txt['post_additionalopt'], '</b></a>
</td>
</tr>';
Altına ekleyin
echo '
<tr>
<td colspan="2" style="padding-left: 5ex;">
<img src="', $settings['images_url'], '/expand.gif" alt="+" id="postMoreExpand" /> <a href="http://siteadresi/-script/index.php" target="_blank"><b> Resim Yükle</b></a>
</td>
</tr>';
İşte bu kadar php bilmediğim ve smf de yeni olduğum için resim yükleme sorununa böyle bir çözüm buldum geliştirilirse dahada kullanışlı olur mesela yükleme sonrasında çıkan pencereye bir buton eklenir basılınca yazı alanına resim kodunu ekler "resim yükle" butonuna tıklanınca popup içinde açılır vs. vs. umarım işinize yarar
Hocam 2 sorum var
1. Bu sistem ile resimleri kendi server ina yüklüyorsun degil mi?
2. Bu sistem kullanılarak SMF foruma eklenmis bir resim (Watermarkli) (Forumda görünüsü ile) ekran görüntüsü var mi?
3. Resize özelligi yok sanirim bu uygulamanin. Atiyorum 3040x2420 ebatinda bir resmi (2024kb den kücük oldugunu varsayalim) yüklemek istersek bu boyutlarda yüklüyor degil mi?
640x480 e çek diyemiyoruz?
Selamlar
1 evet
2 ekran görüntüsü yok ama denendi kesin çalışıyor fakat sunucuda gd modülü yüklü olmalı
3 böyle bir özelliği yok
dediğim gibi geliştirilebilir benim bilgim olmadığı için fazla bir şey yapamadım
Bu arada resim ekle sayfasını popup içinde açmak için bir çözüm buldum
" Simple Image Upload " eklentisinden kopya çekildi :) default tema klasöründe GenericControls.template.php dosyasını açıyoruz
Bul
<textarea
Değiştir
• <a href="javascript:void(0);" onclick="window.open(\'http://www.site.com/upload/index.php?mode=smf&lang=english&forumurl=\' + escape(document.location.href), \'_imagehost\', \'resizable=yes,width=500,height=400\');return false;">Add image to post</a><br /><br /><textarea
onclick="window.open bölümüne upload script`in bulunduğu adresi yazıyoruz width=500 bölümünden poup sayfanın genişliği height=400 bölümünden yüksekliği ayarlanıyor biraz ilerleme kaydettim :)
(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fimg697.imageshack.us%2Fimg697%2F5938%2F33645834.png&hash=fb2b6ba5b80674a6265c72a74bfb712d9e953f96)
birde yükleme işleminden sonra konu alanına bir buton ile linkleri atabilirsek süper olacak
(watermark text)
şu olayı php resim scriptine nasıl uygularız, bilgisi olan var mı?