Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

dizin içindeki resimlere toplu watermark

paskalaki

0
Onaylı Üye
Üye
Katılım
31 Mayıs 2008
Mesajlar
92
Açılan Konu
16
Tepki puanı
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
Onaylı Üye
Üye
Katılım
31 Mayıs 2008
Mesajlar
92
Açılan Konu
16
Tepki puanı
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
Onaylı Üye
Üye
Katılım
31 Mayıs 2008
Mesajlar
92
Açılan Konu
16
Tepki puanı
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
Onaylı Üye
Üye
Katılım
31 Mayıs 2008
Mesajlar
92
Açılan Konu
16
Tepki puanı
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++;
}
?>
 
Üst