ridimensionare un'immagine ad una dimensione esatta, mantenere l'aspetto e riempire qualsiasi spazio in php

StackOverflow https://stackoverflow.com/questions/3209206

Domanda

hy,

Diciamo che voglio convertire un'immagine in una dimensione esatta, ad es:400x300.Il trucco è, se l'immagine, a causa delle sue proporzioni, non si adatta a 400x300, quindi posizionarla lì con bordi neri.

Un'immagine 900x1200 verrebbe convertita fino a 225x300 per mantenere le sue proporzioni, e quindi i bordi neri a sinistra ea destra per renderla 400x300.

foto originale:

|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  

dopo il ridimensionamento voglio assomigliare a questo:

_______________________
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++||||||||++++++|
|+++++++||||||||++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|_____________________|

il:"+++++++"voglio essere un po' di colore, e il "|||||||" sono l'immagine, nel mezzo!

purtroppo non ho ancora alcun codice!

voglio qualcosa del genere:http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php#x22 grazie

È stato utile?

Soluzione

Acquisire familiarità con il gd funzione, che ti permettono di manipolare le immagini.

Avrete bisogno di leggere nella vostra immagine utilizzando uno dei imagecreatefrom... funzione.Quindi dovrai creare una seconda immagine usando, ad esempio, imagecreatetruecolor, che tu riempire con il tuo colore di scelta.Quindi si copia l'immagine originale nella nuova immagine utilizzando imagecopyresampled, che ti permette di ridimensionarlo nel processo.Avrai bisogno di calcolare la nuova dimensione con qualche semplice matematica in anticipo, che funziona come getimagesize può aiutare con.

In alternativa, giocare con il ImageMagick classe, che è un'alternativa a gd si può o non può trovare più facile lavorare con.

Buona fortuna!:)

Altri suggerimenti

Creare un div styled per avere uno sfondo nero e dimensionato a 400x300.Quindi mostra la tua immagine ridimensionata all'interno di quel div.Puoi anche includere un assegno per assicurarti che l'immagine non sia l'aspetto desiderato prima di mostrare il div.

Qualcosa del genere:

<? 
$height-ratio = $height / 300;
$width-ratio = $width / 400;

if ($height-ratio == $width-ratio) {
 $ratio = $height-ratio;
} elseif ($height-ratio > $width-ratio) {
 $ratio = $height-ratio;
 echo "<div class='blackbox'>";
} else {
 $ratio = $width-ratio;
 echo "<div class='blackbox'>";
}

$newHeight = $height / $ratio;
$newWidth = $width / $ratio;
echo "<img src='".$imgSrc."' height='".$newHeight."' width='".$newWidth."' />";

if ($height-ratio != $width-ratio)
 echo "</div>";
?>
.

Con il supporto CSS di:

.blackbox { 
 text-align: center;
 background-color: black;
 height: 300px;
 width: 400px;
}
.

Sono un grande fan di editing e ridimensionamento delle immagini in anticipo per essere le dimensioni che voglio piuttosto che impostare la larghezza e l'altezza quando viene resa.La performance è migliore e non devi preoccuparti di come i diversi browser potrebbero gestirlo in modo diverso.

Quindi se non si dispone di un programma di modifica delle immagini ottenere vernice.net.Gratuito e funziona bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top