| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

21-04-2011, 16:14
|
|
Hanspeter123
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 2
|
|
Bildbreite variable bei fester höhe?
Hallo Leute,
ich habe hier ein Script, (Gastgeberverzeichnis) bei dem sich jeder Vermieter einloggen kann, und dort seine Bilder hochladen kann (halt von seiner ferienwohnung).
Nun habe ich aber das Problem, das ich zwar im Adminbereich ein festes Pixel verhältnis angeben kann, was die höhe und auch die Breite betrifft, zb 117px Breite und 70 px hoch, bei Querformatbildern ist das auch schön, wenn jetzt aber jemand ein Hochformatbild lädt, dann wird das bild gestreckt.
Und jetzt weis ich nicht wie ich die berechnung der Bilder machen kann, damit die höhe immer zb. 70px bleibt, und nur die breite variabel ist.
Hier erstmal das Script:
Code:
//-------------class img-----------------
function addimg($id_site)
{
$db =& JFactory::getDBO();
$query = "SELECT wimg, vwimg, vhimg, max_img FROM #__lbresa_config"; $db->setQuery( $query ); $confimg = $db->loadObject();
$datepic = date('Ymdhis');
$name = $id_site."_".$datepic;
$wimg= $confimg->wimg;
$vwimg= $confimg->vwimg;
$vhimg= $confimg->vhimg;
$max_img= $confimg->max_img;
$dir = 'components/com_joomloc/images'; $dir_temp = 'components/com_joomloc/images/temp';
$ratio = $wimg;
if (isset($_FILES['file']))
{
if ($_FILES['file']['error'] == UPLOAD_ERR_OK)
{
$tableau = @getimagesize($_FILES['file']['tmp_name']);
if ($tableau == FALSE) {
unlink($_FILES['file']['tmp_name']);
$erreur = "<h1>".JText::_( 'Votre fichier n est pas une image.' )."</h1>";
echo "$erreur";
}
else {
if ($tableau[2] == 1 || $tableau[2] == 2 || $tableau[2] == 3) {
$file_upload = 'site_'.$id_site."_img_".$name.".jpg";
copy ($_FILES['file']['tmp_name'], $dir_temp.'/'.$file_upload);
$query = "INSERT INTO #__lbresa_img(id, id_site, img) values('', '$id_site', '$file_upload')";
$db->setQuery( $query );
$db->query();
// si notre image est de type jpeg --------------------------------------------------------------
if ($tableau[2] == 2) {
// on crée une image à partir de notre grande image à l'aide de la librairie GD
$src = imagecreatefromjpeg($dir_temp.'/'.$file_upload);
if($tableau[0]<=$ratio and $tableau[1]<=$ratio)
{
copy ($_FILES['file']['tmp_name'], $dir.'/'.$file_upload);
$src = imagecreatefromjpeg($dir.'/'.$file_upload);
}
else
{
// on teste si notre image est de type paysage ou portrait
if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
// on copie notre fichier généré dans le répertoire des miniatures
imagejpeg ($im, $dir.'/'.$file_upload);
}
$imv = imagecreatetruecolor($vwimg, $vhimg);
imagecopyresampled($imv, $src, 0, 0, 0, 0, $vwimg, $vhimg, $tableau[0], $tableau[1]);
imagejpeg ($imv, $dir.'/vignettes/'.$file_upload);
unlink($dir_temp.'/'.$file_upload);
}
//----------
Kann mir denn dazu jemand einen Tipp geben? Ich weis einfach nicht weiter...?!
|

23-04-2011, 11:46
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Vorher ermitteln ob Hoch oder Querformat, entsprechende Fallunterscheidung, dann klappts auch mit dem Hochformat.
Ist letztendlich reine Mathematik.
|

26-04-2011, 07:46
|
|
Hanspeter123
Registrierter Benutzer
|
|
Registriert seit: Apr 2011
Beiträge: 2
|
|
das ist ein guter ansatz. Mein Problem ist nur, ich weis nicht wie?! Hast du nen Tipp???
|

26-04-2011, 08:54
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Breite = Wunschhöhe * Originalbreite / Originalhöhe
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|