İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

dizin içindeki resimlere toplu watermark

paskalaki

0
İyinet Üyesi
Katılım
31 Mayıs 2008
Mesajlar
92
Reaction score
0
Kod:
<?php
$dir="./images/"; 
$metin="Buraya Yazı  Yaz";
$boyut=14; 
function yaz($eski,$yeni,$text,$font)
{
$e=explode(".",$eski);
$uz=strtolower(end($e));
$dizi=array("jpeg","jpg");
if(in_array($uz,$dizi))
{
$resmim = imagecreatefromjpeg($eski);
$yellow = imagecolorallocate($resmim, 255, 255, 255);
$black = imagecolorallocate($resmim, 0, 0, 0);
$width = imagesx($resmim);
$height = imagesy($resmim);
imagefilledrectangle($resmim, 0, ($height-18) , $width, $height, $black);
$yazilacak = ( $width - imagefontwidth($font)*strlen($text) )/2;
imagestring($resmim, $font, $yazilacak, $height-18, $text, $yellow);
imagejpeg($resmim,$yeni);
imagedestroy($resmim);
}
}
$dosya = scandir($dir);
$x=2;
$a=count($dosya);
$sayi=$a-3;
while($x<$a)
{
$ad=$dir.$dosya[$x];
yaz($ad,$ad,$metin,$boyut);
$x++;
}
?>
 

paskalaki

0
İyinet Üyesi
Katılım
31 Mayıs 2008
Mesajlar
92
Reaction score
0
yukardaki kod güzel çalışıyor fakat

1. yazdığı yazı resmin altında yani o bölümü kesip kullanabilirler yazıyı resmin ortasına yazdırmayı başaramadım yardım edermisiniz.( bir transparan png resim de olabilir ) ekleyebilirim

2. sorum en ve boy oranını verip çıkışta bu boyutlarda olması

3. kb olarak biraz daha az yer kaplamasını sağlama resim makinelerinden çekilen resimler bazen 500kb ile 1mb arasında değişmekte çok yer kaplamakta
 

paskalaki

0
İyinet Üyesi
Katılım
31 Mayıs 2008
Mesajlar
92
Reaction score
0
sanırım çözümü deneme yanılmayla hallettim

Çözümü deneme yanılma yöntemiyle buldum ancak kodlarda hata olup olmadığını üstatlardan bir kontrol etmelerini bekliyorum

açıklama :


klasör içinde bulunan tüm jpg resimleri sırasıyla ve adını değiştirmeden kendi adlarıyla istediğiniz bir çözünürlük ( 1024X748 gibi = 420X320 ye indirmek )boyuta getirip ardından üzerine istediğiniz koordinatlarda bir png resmini eklemek ve orjinal adıyla tekrar aynı klasöre ( yada sizin istediğiniz bir yere ) tekrardan yazmak...

toparladığım kod çalışmakta fakat kodlarda herhangi normal olmayan bir kod dizimi varsa herhangi bir hata bakarsanız iyi olur


Kod:
<?php
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
$dir="./"; 
function yaz($al,$yeni)
{
$e=explode(".",$al);
$uz=strtolower(end($e));
$dizi=array("jpeg","jpg");
if(in_array($uz,$dizi))
{
list($width, $height) = getimagesize($al); 
$image = imagecreatetruecolor(420, 320); 
$source = imagecreatefromjpeg($al); 
imagecopyresized($image, $source, 0, 0, 0, 0, 420, 320, $width, $height); 
imagejpeg($image,$yeni);
$image = imagecreatefromstring(file_get_contents("$al"));
$w = imagesx($image);
$h = imagesy($image);
$watermark = imagecreatefrompng('logo.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);
imagecopy($image, $watermark, $w/2-125, $h/2-50, 0, 0, $ww, $wh);
imagejpeg($image,$yeni);
}
}
$dosya = scandir($dir);
$x=1;
$a=count($dosya);
$sayi=$a-3;
while($x<$a)
{
$ad=$dir.$dosya[$x];
yaz($ad,$ad);
$x++;
}
?>
 

paskalaki

0
İyinet Üyesi
Katılım
31 Mayıs 2008
Mesajlar
92
Reaction score
0
scandir() komutu php5 olduundan serverde çalışmadı aşağıda ufak bir değişiklikle hallettim sanırım
ama localde çalışıp serverde hiçbir etkisi olmuyor kodun bir bakarmısınız



Kod:
<?php
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
$dir="./"; 
function yaz($al,$yeni)
{
$e=explode(".",$al);
$uz=strtolower(end($e));
$dizi=array("jpeg","jpg");
if(in_array($uz,$dizi))
{
list($width, $height) = getimagesize($al); 
$image = imagecreatetruecolor(420, 320); 
$source = imagecreatefromjpeg($al); 
imagecopyresized($image, $source, 0, 0, 0, 0, 420, 320, $width, $height); 
imagejpeg($image,$yeni);
$image = imagecreatefromstring(file_get_contents("$al"));
$w = imagesx($image);
$h = imagesy($image);
$watermark = imagecreatefrompng('logo.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);
imagecopy($image, $watermark, 0, 0, 0, 0, $ww, $wh);
imagejpeg($image,$yeni);
}
}
$dosya = opendir($dir);
while (false !== ($filename = readdir($dosya))) {
    $files[] =$filename;
}

$x=1;
$a=count($files);
$sayi=$a-3;
while($x<$a)
{
$ad=$dir.$files[$x];
yaz($ad,$ad);
$x++;
}
?>
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst