News:

Want to get involved in developing SMF, then why not lend a hand on our github!

Main Menu

İp ucu: smf resim upload script entegresi (bağımsız basit)

Started by gevv, January 15, 2010, 04:38:41 PM

Previous topic - Next topic

gevv

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 :)








Beni kırmayıp watermark text resimeyazı basma özelliğini ekleyen egonomik.com blogundan arkadaşım Caner`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)
    * 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 &copy; 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 :)


İp uçları öneriler

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");


Yükleme sonrasında oluşturulan bağlantı



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


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
ElkArte is a modern, powerful community building forum software. https://www.elkarte.net/

c a g a t a y

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

gevv

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

&nbsp;&bull;&nbsp;<a href="javascript:void(0);" onclick="window.open(\'http://www.site.com/upload/index.php?mode=smf&amp;lang=english&amp;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 :)



birde yükleme işleminden sonra konu alanına bir buton ile linkleri atabilirsek süper olacak

ElkArte is a modern, powerful community building forum software. https://www.elkarte.net/

BlaBlaBla121

(watermark text)

şu olayı php resim scriptine nasıl uygularız, bilgisi olan var mı?
www.webcanavari.net
www.rapcanavari.net
www.rockcanavari.net
www.resimcanavari.net
www.kadincaforum.net

webcanavari - rapcanavari - rockcanavari

Advertisement: