Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    crop immagini e salvataggio sul server

    Ciao a tutti, avevo una domanda da farvi inerente al taglio di immagini da php.

    In pratica faccio un upload di immagine e successivamente vorrei tagliarne una "fetta" x uso thumbnail attraverso questo script http://deepliquid.com/projects/Jcrop/demos/crop.php

    Il problema che mi si pone e che quando taglio la porzione di immagine, questa mi viene visualizzata tramite header('Content-type: image/jpeg'); e imagejpeg($dst_r,null,$jpeg_quality); ma non ho idea di salvarla sul server.... avete una qualche idea di come procedere?

    lo script che uso [tralasciando html e js] è il seguente:

    Codice PHP:


    $azione
    =$_POST['azione'];
    $nome_img=$_POST['nome_img'];
    $success 0;

    $indirizzo_tmp="tmp/"// cartella img temporanea
    $indirizzo_file="file/"// cartella im finale


    if ($azione=="load_img"){    
            
            if (
    $azione =="load_img" and is_uploaded_file($_FILES['upl_img']['tmp_name'])) {
                 
    // COPIA L'IMMAGINE INIZIALE IN UNA CARTELLA FISICA
                
    do {        
                    
    $success 1;               
                    
    $data=date(time());
                    
    $nome_img=$data."_".$_FILES['upl_img']['name'];
                    
    $nome_imgstr_replace(" ""_"$nome_img);

                    if (
    $control==and !move_uploaded_file($_FILES['upl_img']['tmp_name'], $indirizzo_tmp.$nome_img)) {
                      
    $msg $msg."Generic error for in the image upload!!
    "
    ;
                      
    $success=0;
                    }
                  }while (
    false);            
            } 
            print 
    "----------> $success";
    }

    if (
    $azione=="crop_img"){
        
    // MI FA VEDERE LA PORZIONE DI IMMAGINE APPENA TAGLIATA
        
    $targ_w $targ_h 150;
        
    $jpeg_quality 90;

        
    $src $indirizzo_tmp.$nome_img;
        
    $img_r imagecreatefromjpeg($src);
        
    $dst_r ImageCreateTrueColor$targ_w$targ_h );

        
    imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
        
    $targ_w,$targ_h,$_POST['w'],$_POST['h']);
        
        
        
    header('Content-type: image/jpeg');
        
    imagejpeg($dst_r,null,$jpeg_quality);


        exit;

    ty

  2. #2
    Ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/imagejpeg (secondo parametro)

  3. #3
    Grazie del link!
    se ho capito bene, devo correggere questa parte...


    Codice PHP:
     filename
     The path to save the file to
    . If not set or NULLthe raw image stream will be outputted directly.
    To skip this argument in order to provide the quality parameter, use NULL
    Ma basterebbe mettere così?

    header('Content-type: image/jpeg');
    imagejpeg($dst_r,"mia_cartella/thumb",$jpeg_quality);

    ??

  4. #4

  5. #5
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    invece di aprire un thread nuovo uppo questo, dato che è Jcrop sempre, e già che ci sono per entrare IT (tanto immagino hai già risolto) dico si, basta aggiungere il path per il salvataggio su server.

    Il problema non è tanto la miniatura che mi basta resettare il width e l'height e l'ho scapolata, sto smoccolando come un bizantino per il crop.

    La questione è lo stretch dell'immagine, che non riesco a capire come rendere proporzionale alla selezione impostata, questo il codice che uso (quasi quello dell'esempio ufficiale)

    Codice PHP:
    <?php
    /* Jcrop image cropping plugin for jQuery  @copyright 2008 Kelly Hallman - more info: [url]http://deepliquid.com/content/Jcrop_Implementation_Theory.html[/url]  */
    if ($_SERVER['REQUEST_METHOD']=='POST'){
        
    $src                 'demo_files/flowers.jpg'//poi pesca da upload
        
    $jpeg_quality         99;
        
    $dst_w                 $_POST['w'];
        
    $dst_h                 $_POST['h'];
        
    $src_x                 $_POST['x'];
        
    $src_y                 $_POST['y'];
        
    $dst_x                 0;
        
    $dst_y                 0;
        list(
    $src_w,$src_h) = getimagesize($src);
    //    $dst_h                 = round(($src_h*$dst_w) / $src_w,0);
        
    $img_r                 imagecreatefromjpeg($src);
        
    $dst_r                 ImageCreateTrueColor($dst_w$dst_h);
        
    /* imagecopyresampled  ( 
                resource $dst_image,     // immagine destinazione
                resource $src_image,     // immagine sorgente
                int $dst_x  ,             // coordinate x immagine destinazione
                int $dst_y  ,             // coordinate y immagine destinazione
                int $src_x  ,             // coordinate x immagine sorgente
                int $src_y  ,             // coordinate y immagine sorgente
                int $dst_w  ,             // larghezza immagine destinazione
                int $dst_h  ,             // altezza immagine destinazione
                int $src_w  ,             // larghezza immagine sorgente
                int $src_h  )            // altezza immagine sorgente 
           //  php.net/manual/en/function.imagecopyresampled.php */
        
    imagecopyresampled    ($dst_r,
                            
    $img_r
                            
    $dst_x
                            
    $dst_y
                            
    $src_x
                            
    $src_y,
                            
    $dst_w,
                            
    $dst_h,
                            
    $src_w,
                            
    $src_h);
        
    header('Content-type: image/jpeg');
        
    imagejpeg($dst_rnull,$jpeg_quality);
        exit;
    }
    ?><html>....etc etc
    il contenuto head
    Codice PHP:
        <script src="../js/jquery.min.js"></script>
        <script src="../js/jquery.Jcrop.js"></script>
        <script language="Javascript">
            $(function(){
                $('#cropbox').Jcrop({
                    //aspectRatio: 1, // mantiene la seleziona vincolata
                    onSelect: updateCoords
                });
            });
            function updateCoords(c) {
                $('#x').val(c.x);
                $('#y').val(c.y);
                $('#x2').val(c.x2);
                $('#y2').val(c.y2);
                $('#w').val(c.w);
                $('#h').val(c.h); };
            function checkCoords()     {
                if (parseInt($('#w').val())) return true;
                alert('Seleziona un\'area di ritaglio prima di ritagliare l\'immagine.');
                return false;            };
        </script> 
    E l'html che metto solo per chiarezza ed avere tutto il quadro:
    Codice PHP:
    <div id="outer">
        <
    div class="jcExample">
          <
    div class="article">
                <
    h1>Test di crop immagine</h1>
                [
    img]demo_files/flowers.jpg[/img]
                <
    form action="crop.php" method="post" onSubmit="return checkCoords();">
                    <
    label for="x">coordinate x1</label> <input type="text" size="4" id="x" name="x" />
                    <
    label for="y">coordinate y1</label> <input type="text" size="4" id="y" name="y" />
                    <
    label for="x2">coordinate x2</label> <input type="text" size="4" id="x2" name="x2" />
                    <
    label for="y2">coordinate y2</label> <input type="text" size="4" id="y2" name="y2" />
                    

                    <
    label>altezza</label> <input type="text" size="4" id="w" name="w" />
                    <
    label>larghezza</label> <input type="text" size="4" id="h" name="h" />
                    <
    input type="submit" value="Ritaglia Immagine" />
                </
    form>
            
     
    JCrop: [url="http://deepliquid.com/content/Jcrop_Implementation_Theory.html"][url]http://deepliquid.com/content/Jcrop_Implementation_Theory.html[/url] [/url]        </div>
        
    </div>
    </
    div
    quando effettuo il submit,voglio che l'immagine sia croppata all'esatto valore di selezione (e qui torna), ma il contenuto dell'immagine croppata viene stretchato (allungato), ho messo l'esempio qui per il testing

    praticamente mi sembra di aver capito che mentre prende giustamente l'x e l'y delle coordinate, ma mantiene la proporzione dell'immagine originale che è (in questo caso) 500x370 e lo riporta anche nella nuova immagine allungandola...qualche suggerimento?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.