Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216

    tagliare un img in coordinate

    ciao a tutti

    tramite questo script
    Codice PHP:
     <?php   // RECUPERO VARIE INFO DELL'IMG     
    list($width$height$type,$attr)=getimagesize('BackOffice/upload_img/'.$row_PercorsoGB['percorso']); 
          
    echo 
    "la mia img:"."<br />"."BackOffice/upload_img/".$row_PercorsoGB['percorso']."<br />"."ha dimensioni: "." ".$width." X ".$height."<br /><br />calcolo il centro dell'img<br /><br />";  
          
    $w $width;       
    $h $height;        
    $x 170;  //DIMENSIONI DEL DIV  
          
    if($height>$width)            
    {                
    //RIDIMENSIONO IN BASE ALL'ALTEZZA
    $setX $width $x;                
    $height = (int)($x/$w*$h);
    echo 
    "se h > w<br />w = 170 mentre h = ".$height;             
    }

    else                
    {
    //RIDIMENSIONO IN BASE ALLA LARGHEZZA                    
    $setY $height $x;                    
    $width = (int)($x/$h*$w);                    
    echo 
    "se W > H<br />H = 170 mentre W = ".$width;                 
    }

        
    //CALCOLO IN CENTRO DELL'IMG    
    $setX $width/2;    
    $setY $height/2;        
    echo 
    "<br />quindi il centro sarà: ".$setX." X ".$setY;     ?>
    ora supponendo di avere un immagine ridimensionata 302 X 170 il centro sarà 151 X 85
    avendo un div 170 X 170 come posso "ritagliare" l'img (in questo caso solo la larghezza) 85px LEFT e 85px RIGHT?????
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    guarda la funzione imagecopy

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    ho provato così ma non và
    ma sono costretto ad usare imagejpeg per stampare l'img a video???

    Codice PHP:
    .
    .
    .

     
    $img_p imagecreatetruecolor($setX$setY);   
     
    //$percImg = "BackOffice/upload_img/".$row_PercorsoGB['percorso'];    
    $startX $setX 85;    
    $startY $setY 85;   
     
    imagecopy($img_p"BackOffice/upload_img/".$row_PercorsoGB['percorso'], 0000$startX$startY$w$h);   
     
    //imagejpeg($img_p,NULL,100); 
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    hai visto l'esempio numero 4 della pagina del manuale di imagecopy?
    devi fare una cosa simile

    imagejpeg devi usarlo per forza, sempre che tu voglia un output dell'elaborazione che hai fatto...

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    no asp forse mi sono spiegato male...
    ho scritto "ritagliare" ma in realtà è sbagliato

    io in poche parole devo fare una cosa del genere:
    img.jpg

    cioè devo prendere l'immagine ridimensionarla in base all'altezza o alla larghezza (a seconda della >) e poi visualizzare il centro dell'img nel div
    quindi l'idea era ritagliare, ma no tagliare l'immagine realmente ma solo per appoggiarla nel div
    io attualmente sono alla seconda immagine, mi manca centrarla o quello che sia...
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Ma devi posizionare l'immagine nel DIV e basta? Se non vuoi usare imagejpeg come output verso il browser prendendo solo quello che ti serve dell'immagine originale, puoi provare a farlo con i CSS, proprietà margin e padding e poi mettendo il livello sotto quelli adiacenti con z-index
    Secondo me al variare del browser però potresti avere comportamenti differenti nell'interpretazione del CSS

    PS: le immagini JPEG tagliate e "centrate" alla giusta dimensione potresti anche pensare di salvarle in una cartella e poi usarle in !maniera classica

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    l'idea principale era quella, ma poi mi sono reso conto che ridimensionando l'img, l'img stessa si posizionava in alto a sx del div, allora avevo pensato di fare una sorte di cernita dell'img in modo da far visualizzare solo quello che mi serviva(cioè partendo dal centro dell'img top 85 right 85 bottom -85 left -85), ma l'intenzione non è quello di modificare/tagliare l'img sul server, che comunque sia mi servono intere...

    quindi, tornando al problema, mi servirebbe qualcosa che prenda dal centro dell'img quello che mi serve dell'img originale senza modificarla, php o css...

    non so cosa mi consigli??? come faresti te???
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Io userei PHP
    Una funzioncina basata su imagecopy che prepari l'immagine al momento in cui viene caricata sullo spazio web, salvando l'originale con il suo nome e la copia croppata con il nome dell'originale con un suffisso
    In presentazione della pagina linkerei all'immagine croppata salvata

    Se proprio non la si vuole salvare, userei la stessa funzione per creare l'immagine croppata a runtime e mostrarla in output alla pagina

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    unendo il mio script per ridimensionare l'img e l'esempio del manuale, ho ricavato questo.

    Codice PHP:
    <?php
    // Original image$filename = 'test.jpg';
    // Get dimensions of the original imagelist($current_width, $current_height) = getimagesize($filename);
                    
    $w $current_width;
            
    $h $current_height;
            
    $x 170//DIMENSIONI DEL DIV       
     
    if($current_height>$current_width)//RIDIMENSIONO IN BASE ALL'ALTEZZA           
     
    {                $setX $current_width $x;                
                     
    $current_height = (int)($x/$w*$h);
                    
    //echo "se h > w<br />w = 170 mentre h = ".$height;
                 
    }else                
                   {
    //RIDIMENSIONO IN BASE ALLA LARGHEZZA                   
                                  
    $setY $current_height $x;                    
                                  
    $current_width = (int)($x/$h*$w);                    
    //echo "se W > H<br />H = 170 mentre W = ".$width;                 }                
    // COORDINATE DA CUI PARTE IL RITAGLIO
                           
    $left $setX;
                           
    $top $setY;
    // GRANDEZZA DEL RITAGLIO
                            
    $crop_width 170;
                            
    $crop_height 170;
    // Resample the image
    $canvas imagecreatetruecolor($crop_width$crop_height);
    $current_image imagecreatefromjpeg($filename);
    imagecopy($canvas$current_image00,$left$top$current_width$current_height);
    imagejpeg($canvas$filename100);?>

    <img src="test.jpg" />
    ho 2 problemi:
    1- nonostante il ridimensionamento funzioni, l'img viene tagliata dall'img originale (ovviamente il resize è solamente un'equazione quindi non modifica le dimensioni dell'originale)

    2- tenendo conto di utilizzare l'img a runtime, non riesco a evitare di far modificare l'img originale sul server (quindi la taglia fisicamente)
    Ultima modifica di rare; 31-08-2014 a 10:01
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ho riscritto un po' tutto perché non riuscivo a comprendere bene il tuo codice
    quella che ti propongo è una funzione che mostra a runtime il centro dell'immagine ridimensionata e il codice per usarla
    Codice PHP:
    <?php
    function resizeCropJpeg_Square($source$dim) {
        
    $filename $source;
        
    $max $dim;

        list(
    $width$height) = getimagesize($filename);

        
    $width <= $height $c $max $width $c $max $height;

        
    $new_width $c $width;
        
    $new_height $c $height;

        
    $x 0;
        
    $y 0;

        if(
    $new_width $new_height) {
            
    $x = ($width $max 1/$c) / 2;
        } 
        else {
            
    $y = ($height $max 1/$c) / 2;
        }


        
    $current_image imagecreatefromjpeg($filename);
        
    $canvasimagecreatetruecolor($max$max);
        
    $image_res imagecopyresized($canvas$current_image00$x$y$new_width$new_height$width$height);


        
    ob_start();
        
    imagejpeg($canvasNULL100);
        
    $image ob_get_clean();
        
    imagedestroy($canvas);
        return 
    base64_encode($image);
    }

    $file "test_P.jpg";
    $show_me resizeCropJpeg_Square($file170); 
    echo 
    '<img src="data:image/jpeg;base64,' $show_me '" /><br />IMMAGINE';
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.