Advertisement:

Author Topic: İp ucu: smf resim upload script entegresi (bağımsız basit)  (Read 17914 times)

Offline gevv

  • Full Member
  • ***
  • Posts: 552
  • Gender: Male
  • ElkArte powerful forum software
    • elkarte on GitHub
    • https://www.elkarte.net/
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


Code: [Select]

// 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ı

Code: [Select]
// 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ı




Code: [Select]
$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


Code: [Select]
<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

Code: [Select]
$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

Code: [Select]
[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

Code: [Select]
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

Code: [Select]
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

Code: [Select]
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

Code: [Select]
<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
Code: [Select]
// 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

Code: [Select]
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
« Last Edit: January 17, 2010, 06:22:05 AM by gevv »
ElkArte is a modern, powerful community building forum software. https://www.elkarte.net/

Offline c a g a t a y

  • Full Member
  • ***
  • Posts: 633
  • Gender: Male
Re: İp ucu: smf resim upload script entegresi (bağımsız basit)
« Reply #1 on: January 21, 2010, 05:13:07 AM »
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

Offline gevv

  • Full Member
  • ***
  • Posts: 552
  • Gender: Male
  • ElkArte powerful forum software
    • elkarte on GitHub
    • https://www.elkarte.net/
Re: İp ucu: smf resim upload script entegresi (bağımsız basit)
« Reply #2 on: January 23, 2010, 04:00:28 PM »
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
Code: [Select]
<textarea
Değiştir
Code: [Select]
&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/

Offline BlaBlaBla121

  • Semi-Newbie
  • *
  • Posts: 94
  • Gender: Male
    • WeBCaNaVaRi
Re: İp ucu: smf resim upload script entegresi (bağımsız basit)
« Reply #3 on: January 29, 2010, 12:25:47 PM »
(watermark text)

şu olayı php resim scriptine nasıl uygularız, bilgisi olan var mı?