

PHP - Klasördeki Tüm Resimleri Belirlediğim Bir Resimle Değiştirme
-
arkadaşlar 10-15bin resim üzerinde düzenleme yapmam gerekiyor. tek tek uğraşma ihtimali baya bir korkunç duruyo. yapmak istediğim falanca klasördeki tüm resimlerin isimleri değişmeden ornek.jpg ile değiştirmek istiyorum. örneğin bir klasörde;
tahribat.jpgmurit.jpg
deneme.jpg
şeklinde resimler olsun. bunların tümünü ornek.jpg ile değiştirmek istiyorum ama isimleri yine aynı kalsın. yani üstüne şettiricez. 10 sevap point değerindeki bu sıkıntıma yardım edebilecek bi mürid var mı? çok sıkıntılı bir iş ise ücretli olarak da düşünebilirim ama 10 sevap pointten vazgeçmeniz gerekir.
-
yaptığın işin sonunda elinde aynı resimden farklı isimde 10-15 bin tane resim olacak yanlış anlamadıysam herhalde? eğer öyle ise .htaccess kullanmayı düşün derim. tek bir resimle istenilen bütün resimler yerine sadece o resmi gösterebilirsin.
-
hocam o klasöre başka resimlerde atıcam. işin özü bi dünya sorunlu resim var. bunlar vt de kayıtlı olduğu için belirlediğim bir resim dosyasını hepsinin üstüne yazdırmak istiyorum. şuan en sağlıklısı bu olur.
-
çizeyim eve gelince gece yazarım.
-
<?
$dir = "resimlerin/oldugu/kalsor";
$dirh = opendir($dir);
$replace_image_fname = "ornek.jpg";
list($w, $h) = getimagesize($replace_image_fname);while (false != ($file = readdir($dirh)) {
if (!preg_match("/image/", mime_content_type($file))) continue;
$image_dest_fname = $file;
$image_dest = imagecreatetruecolor($w, $h);
$replace_image = imagecreatefromjpeg($replace_image_fname);
imagecopyresampled($image_dest, $replace_image, 0, 0, 0, 0, $w, $h, $w, $h);
imagejpeg($image_dest, null, 100);
}?>
Hocam kodu denemeden yazdım. Birkaç resmi test klasörüne atıp dene. Çalışırsa ana klasöründe denersin.
Kolay gelsin.
-
klasördeki tüm dosyaların isimlerini alıp, o isimle değiştirmek istediğin dosyayı kopyalayabilirsin. Test etmeden yazıyorum hocam sen farklı bir klasörde denersin önce
$islem=@opendir("."); while (($eski=readdir ($islem))){ if ( is_file($eski)){ copy("resimyok.jpg",$eski); } } closedir($islem); -
hocalar deniyorum hemen. sonucu yazarım tekrardan.
-
hepinize teşekkür ederim.
lepusmorris tarafından 18/Kas/14 23:22 tarihinde düzenlenmiştir
@acemi-webci; hocam senin kod çalıştı. işin gücün rast gelsin. teşekkür ederim. -
lepusmorris bunu yazdı
hepinize teşekkür ederim.
@acemi-webci; hocam senin kod çalıştı. işin gücün rast gelsin. teşekkür ederim.eyvallah hocam seninde
-
ben biraz daha geliştirip yazdım. bigün başkasının işine yarayabilir;
<?php class copy2dir{ private $dir,$files,$orign; public $copied=0,$total,$time,$error; public function __construct(){ $this->time = microtime(true); } private function getFiles(){ $this->files = array_diff(scandir($this->dir), array('..', '.')); $this->total = count($this->files); return $this->files; } private function changeFiles(){ if(file_exists($this->orign)){ foreach ($this->files as $file) { copy($this->orign,$this->dir.'/'.$file) ? $this->copied++ : $this->error=$file; } } $this->time =(microtime(true) - $this->time)/60; return $this->copied === $this->total; } public function setDir($dir){ $this->dir = $dir; return $this; } public function setOrign($orign){ $this->orign = $orign; return $this; } public function init(){ return $this->getFiles() && $this->changeFiles(); } } ?>kullanımı;
<?php $asd = new copy2dir; $asd->setDir('path/falan') // Klasör yolu. ->setOrign('deneme.jpg'); // Kopyalanacak dosya yolu. if($asd->init()){ // İşlemi çalıştır. echo 'islem basarili '.$asd->copied.'/'.$asd->total.'<br> '.$asd->time.' saniyede tamamladi.'; }else{ // Başarısız oldu. echo 'islem basarisiz '.$asd->copied.'/'.$asd->total.'<br> '.$asd->time.' saniyede tamamladi.<br>'; echo $asd->error.' dosyasi kopyalanamadi.'; } ?>