• 17-03-2015, 13:08:50
    #1
    <form action=""  method="post" enctype="multipart/form-data" onsubmit="return SubmitForm(this);">
         <input type="text" name="images" value="https://i.hizliresim.com/RJv6qR.jpg"/>
         <input type="submit" name="submit" value="Gönder">
    </form>

    Merhabalar, yukarıdaki gibi bir formum var. form içerisindeki inputa uzak bir kaynaktaki resmin linkini yazıp formu post ediyorum.
    post ettiğim formdaki input ta bulunan resmi $_FILES değişkenine atama ve move_uploaded_file fonksiyonuyla upload edebilme gibi bir şansım var mı acaba ?

    post ile gelen resmi aşağıdaki fonksiyondan geçmesini istiyorum...


    $idx   	    = "5";
    $path	      = "upload/";
    $dest	      = $path.$idx.".jpg";	
    $source	    = $_FILES ['images']['tmp_name'];
    $tip 		  = $_FILES ['images']['type'];
    $image_with	= "300";
    
    if ( move_uploaded_file($source, $dest) )
    {
    	if($tip == "image/jpeg")
    	{
    		$resim	= @imagecreatefromjpeg($dest); 
    	}
    		else if($tip == "image/png")
    	{
    		$resim	= @imagecreatefrompng($dest); 
    	}
    	else if($tip == "image/gif")
    	{
    		$resim	= @imagecreatefrompng($dest); 
    	}
    	else
    	{
    		return false;
    	}
    
    	$boyutlar			  = getimagesize($dest);
    	$resimorani			= $image_with / $boyutlar[0];
    	$yeniyukseklik 		= $resimorani*$boyutlar[1];
    	$yeniresim			 = @imagecreatetruecolor($image_with, $yeniyukseklik);
    
    	@imagecopyresampled($yeniresim, $resim, 0, 0, 0, 0, $image_with, $yeniyukseklik, $boyutlar[0], $boyutlar[1]);
    	!imagejpeg($yeniresim, $dest, 100);
    	@imagedestroy($yeniresim);
    	chmod ($dest, 0755);	
    }
  • 18-03-2015, 08:36:20
    #2
    function resimcek($resimadi) {
    $link = 'https://i.hizliresim.com/'.$resimadi;
    $yolcuk = 'yuklenecekyer/'.$resimadi; 
    $curl = curl_init($link);
    $fopen = fopen($yolcuk,'w');
    curl_setopt($curl, CURLOPT_HEADER,0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($curl, CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);
    curl_setopt($curl, CURLOPT_FILE, $fopen);
    curl_exec($curl);
    curl_close($curl);
    fclose($fopen);
    }
    Resimlerin cekileceği adresi sabit varsayarak yazdım. Sen inputa sadece resim adını , ornegin RJv6qR.jpg yazıyorsun bu da otomatik cekip belirlediğin klasore cekiyor. Gerisi artık sana kalmıs.
  • 18-03-2015, 19:15:18
    #3
    hocam öncelikle cevap yazma zahmetinde bulunduğunuz için teşekkür ederim fakat derdim sadece resmi kopyalamak değil. kopyalarken yeniden boyutlandırmak...
    yoksa sadece kopyalamaksa bunu copy("https://i.hizliresim.com/RJv6qR.jpg", "upload/123.jpg"); şeklinde de yapılabilir..
  • 18-03-2015, 21:59:19
    #4
    Kendi sunucunuza aldıktan sonra istediğiniz boyutlandırma işlemlerini yapabilirsiniz. tmp yerine kopyaladığınız resmi kullanacaksınız.
  • 18-03-2015, 22:52:57
    #5
    ylv
    Üyeliği durduruldu
    medesan adlı üyeden alıntı: mesajı görüntüle
    <form action=""  method="post" enctype="multipart/form-data" onsubmit="return SubmitForm(this);">
         <input type="text" name="images" value="https://i.hizliresim.com/RJv6qR.jpg"/>
         <input type="submit" name="submit" value="Gönder">
    </form>

    Merhabalar, yukarıdaki gibi bir formum var. form içerisindeki inputa uzak bir kaynaktaki resmin linkini yazıp formu post ediyorum.
    post ettiğim formdaki input ta bulunan resmi $_FILES değişkenine atama ve move_uploaded_file fonksiyonuyla upload edebilme gibi bir şansım var mı acaba ?

    post ile gelen resmi aşağıdaki fonksiyondan geçmesini istiyorum...


    $idx   	    = "5";
    $path	      = "upload/";
    $dest	      = $path.$idx.".jpg";	
    $source	    = $_FILES ['images']['tmp_name'];
    $tip 		  = $_FILES ['images']['type'];
    $image_with	= "300";
    
    if ( move_uploaded_file($source, $dest) )
    {
    	if($tip == "image/jpeg")
    	{
    		$resim	= @imagecreatefromjpeg($dest); 
    	}
    		else if($tip == "image/png")
    	{
    		$resim	= @imagecreatefrompng($dest); 
    	}
    	else if($tip == "image/gif")
    	{
    		$resim	= @imagecreatefrompng($dest); 
    	}
    	else
    	{
    		return false;
    	}
    
    	$boyutlar			  = getimagesize($dest);
    	$resimorani			= $image_with / $boyutlar[0];
    	$yeniyukseklik 		= $resimorani*$boyutlar[1];
    	$yeniresim			 = @imagecreatetruecolor($image_with, $yeniyukseklik);
    
    	@imagecopyresampled($yeniresim, $resim, 0, 0, 0, 0, $image_with, $yeniyukseklik, $boyutlar[0], $boyutlar[1]);
    	!imagejpeg($yeniresim, $dest, 100);
    	@imagedestroy($yeniresim);
    	chmod ($dest, 0755);	
    }
    meraktan bizzat şimdi yazıp denedim ve sonuç olumsuz.
    move_uploaded_file yerine copy fonksiyonu kullandığımda tmp dizininden dosyayı alabiliyorum.

    	$tp = fopen('php://input','rb');
    	
    	$td = tempnam(sys_get_temp_dir(),'rsm');
    	
    	$tf = fopen($td,'wb');
    	
    	fwrite($tf,file_get_contents('https://www.r10.net/images/logom7.png'));
    	
    	stream_copy_to_stream($tp,$tf);
    	
    	fclose($tp);
    	fclose($tf);
    	
    	var_dump(move_uploaded_file($td, dirname(__FILE__).DIRECTORY_SEPARATOR.'test.png'));
    	
    	$tp = tmpfile();
    	fwrite($tp,file_get_contents('https://www.r10.net/images/logom7.png'));
    	
    	var_dump(move_uploaded_file($tp, dirname(__FILE__).DIRECTORY_SEPARATOR.'test.png'));
    	
    	fclose($tp);
  • 18-03-2015, 23:10:56
    #6
    <?php
    // Resim Boyutlandırma
    function  boyutlandir($kaynak_yol,$hedef_yol,$en,$uz) {
    $filename=basename($kaynak_yol);
    $file_extension=strtolower(substr(strrchr($filename,"."),1)) ;
    list($width, $height)=getimagesize($kaynak_yol);
    $genislik = $width; $yukseklik = $height;
    if($en=='orj' and $uz=='orj') {
    if($genislik>900 and $genislik>$yukseklik) {
    $gfark = $genislik-900; $bol = $genislik/100; $yuzdesi = round($gfark/$bol);
    $yenigenislik = 900; $yeniyukseklik = $yukseklik-round(($yukseklik*$yuzdesi)/100); $en = 900; $uz = $yeniyukseklik; 
    }
    elseif($yukseklik>900 and $yukseklik>$genislik) {
    $yfark = $yukseklik-900; $ybol = $yukseklik/100; $yyuzdesi = round($yfark/$ybol);
    $yeniyukseklik = 900; $yenigenislik = $genislik-round(($genislik*$yyuzdesi)/100); $en = $yenigenislik; $uz = 900; 
    } else {
    $en = $genislik; $uz = $yukseklik;
    }}
    $newwidth=$en; $newheight=$uz;
    $thumb=imagecreatetruecolor($newwidth, $newheight);
    imagealphablending($thumb, false);
    imagesavealpha($thumb, true); 
    if($file_extension=="jpeg"||$file_extension=="jpg"){
    $source = imagecreatefromjpeg($kaynak_yol);
    $kayit=$hedef_yol.'/'.$filename;
    }else 
    if($file_extension=="gif"){
    $source = imagecreatefromgif($kaynak_yol);
    $kayit=$hedef_yol.'/'.$filename;
    }else if($file_extension=="bmp"){
    $source = imagecreatefromwbmp($kaynak_yol);
    $kayit=$hedef_yol.'/'.$filename;
    }else 
    if($file_extension=="png"){
    $source=$source = imagecreatefrompng($kaynak_yol);
    $kayit=$hedef_yol.'/'.$filename;
    }
    imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    if($file_extension=="jpeg"||$file_extension=="jpg"){
    imagejpeg($thumb,$kayit);
    }
    else if($file_extension=="gif"){
    imagegif($thumb,$kayit);
    }
    else if($file_extension=="bmp"){
    image2wbmp($thumb,$kayit);
    }else if($file_extension=="png"){
    imagepng($thumb,$kayit);   
    }
    }
    
    
    // Resim Çekme
    function resimcek($resimadi) { 
    $link = 'https://i.hizliresim.com/'.$resimadi; 
    $klasor = 'yuklenecekyer/';
    $yolcuk = $klasor.$resimadi;  
    $curl = curl_init($link); 
    $fopen = fopen($yolcuk,'w'); 
    curl_setopt($curl, CURLOPT_HEADER,0); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($curl, CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0); 
    curl_setopt($curl, CURLOPT_FILE, $fopen); 
    curl_exec($curl); 
    curl_close($curl); 
    fclose($fopen); 
    @boyutlandir($yolcuk,$klasor,650,350);
    }
    
    
    // Çalıştırmak için sadece bunu yazman kafi.
    resimcek("RJv6qR.jpg");
    ?>


    Şuan denedim calısıyor.

    @boyutlandir($yolcuk,$klasor,650,350);

    Burada 650,350 yerine 'orj','orj' yazarsan direk resimi ceker ve en / boy hesaplaması yapıp genislik veya yukseklik olarak 900px e sabitleyip (resimin dikey yada yatay oldugunu bularak) cozunurluk bozulmadan resize yapar.
  • 19-03-2015, 16:57:17
    #7
    Hocam zaman ayırıp beli ki çok emek vermişsiniz çok teşekkür ederim.
  • 19-03-2015, 17:40:29
    #8
    Farklı sunuculardan farklı resimler cekebilmek için resimcek() fonksiyonunu asagıdaki ile değiştirebilirsiniz.

    $url değişkenine tanımlayacagınız resimler (Son url kesinlikle bir resim formatında olmalı. Ornegin http://img7.mynet.com.tr/ha8/yazi/ciko-2.jpg gibi...) otomatik olarak cekilir ve belirlediğiniz boyuta getirilip yine belirttiğiniz klasore yuklenir. Acıklama kısımındaki kodlar acmazsanız ornek verdiğim bu resimi yine ciko-2.jpg adı ile cekecektir. Eğer bahsettiğim kısımı acarsanız o anın time() değerine gore benzersiz bir sayı olusturup (ornegin 123456415615.jpg) yukleyecek.

    Kolay gelsin.



    // Resim Çekme 
    function resimcek($link) {  
    $resimbul = @explode('/',$link);
    $dosyaadi = end($resimbul);
    // Eğer resim adını değiştirmek istiyorsan aşağıdaki kodları aç. Otomatik time() degeri ile benzersiz bir sayı uretecek.
    
    /*
    $uzantibul = pathinfo($dosyaadi);
    $uzanti = $uzantibul['extension'];
    $dosyaadi = time().'.'.$uzanti;
    */
    $klasor = 'yuklenecekyer/'; 
    $yolcuk = $klasor.$dosyaadi;   
    $curl = curl_init($link);  
    $fopen = fopen($yolcuk,'w');  
    curl_setopt($curl, CURLOPT_HEADER,0);  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);  
    curl_setopt($curl, CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);  
    curl_setopt($curl, CURLOPT_FILE, $fopen);  
    curl_exec($curl);  
    curl_close($curl);  
    fclose($fopen);  
    @boyutlandir($yolcuk,$klasor,650,350); 
    } 
    
    
    // Çalıştırmak için sadece bunu yazman kafi. 
    $url = 'http://sinema.mynet.com/images/foto-analiz/001766/brad-pitt-ve-angelina-jolie_5098707.jpg';
    resimcek($url);