Avatar billede kimox Nybegynder
21. april 2006 - 11:58 Der er 27 kommentarer og
1 løsning

hjælp til billede størrelse

Hej.

Er der nogle af jer der har en kode eller kan lave en kode så hvis den billede url man henter fra min db ("$picture") er over 100x100 så skal den scallere billedet til 50x50 f.eks.

håber i kan hjælpe.
Avatar billede jakobdo Ekspert
21. april 2006 - 17:08 #1
Du kunne bruge denne funktion:

function resize( $filename, $newfilename, $maxw, $maxh)
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}

Funktionen skal så kun bruges, hvis dit billede er større end 100x100.
Det kan du evt teste med getimagesize() eller hvordan du gemmer dit billede.
Avatar billede kimox Nybegynder
21. april 2006 - 20:35 #2
Okay, så denne function skal bruges når jeg lægger billedet op ?

Og går den sådan så den bare scallere billede ned til en fast størrelse, eller gør den ligesom på http://www.google.dk/imghp når man søger på et billede (altså "ødelægger" den billedet).
Avatar billede jakobdo Ekspert
21. april 2006 - 22:41 #3
Den skalere billedet, så et billede i f.eks. 400x200, vil blive resizet til: 100x50 osv.
Og ja, den skal du bruge når billedet lægges op.
Avatar billede kimox Nybegynder
24. april 2006 - 08:54 #4
Er du sød at sætte det sammen med denne så det virker?

      <?php
require "../db.php";
if (isset($_POST['tilbage'])) {
header('Location:soeg_job.php');
}

if (isset($_POST['redi'])) {
if (isset($_FILES['upfile'])) {
  $filetyper = array("image/gif", "image/jpeg", "image/pjpeg", " "); 
  if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
    echo"<table width=\"366\"  border=\"1\" bordercolor=\"#000000\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  <tr><td width=\"366\">
  <table width=\"366\" cellpadding=\"0\" cellspacing=\"0\">
    <td width=\"10\" valign=\"middle\" bgcolor=\"#ebebeb\" class=\"god_txt\"><img src=\"images/warning.gif\" width=\"23\" height=\"25\"></td>
      <td width=\"356\" valign=\"middle\" bgcolor=\"#ebebeb\" class=\"god_txt\">&nbsp;Der blev ikke lagt noget billede op.</td>
    </table>
    </td>
  </tr>
</table><br>";
  }
  if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {
    if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {
      $uldir = '../virks_logo/';
      $ulfile = $uldir.basename($_FILES['upfile']['name']);
      move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile);
    }
  }
}
$dato = $_POST['dato'];
$oversk = $_POST['oversk'];
$belig = $_POST['belig'];
$virks = $_POST['virks'];
$stillkat = $_POST['stillkat'];
$tekst = $_POST['tekst'];
$sti = $HTTP_HOST;
$upfile = "http://$sti/web/virks_logo/" . $_FILES['upfile']['name'];
if ($upfile == "http://teamvikaren.dk/web/virks_logo/") {
$upfile = "";
}
mysql_query("INSERT INTO jobs (dato, oversk, belig, virks, stillkat, tekst, upfile) VALUES ('$dato','$oversk', '$belig', '$virks', '$stillkat', '$tekst', '$upfile')") or die(mysql_error());
    echo "<table width=\"366\"  border=\"1\" bordercolor=\"#000000\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  <tr><td width=\"366\">
  <table width=\"366\" cellpadding=\"0\" cellspacing=\"0\">
    <td width=\"10\" valign=\"middle\" bgcolor=\"#ebebeb\" class=\"god_txt\"><img src=\"images/godkend.gif\" width=\"23\" height=\"25\"></td>
      <td width=\"356\" valign=\"middle\" bgcolor=\"#ebebeb\" class=\"god_txt\">&nbsp;Jobbet blev tilføjet.</td>
    </table>
    </td>
  </tr>
</table><br>";
}
?>
Avatar billede jakobdo Ekspert
24. april 2006 - 08:57 #5
Du kan f.eks. rette linien:
move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile);
til:
resize($_FILES['upfile']['tmp_name'], $ulfile, 100, 100);
Avatar billede kimox Nybegynder
24. april 2006 - 09:13 #6
okay, så jeg smider funktionen et eller andet sted i koden, og ændre
move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile);
til:
resize($_FILES['upfile']['tmp_name'], $ulfile, 100, 100);

hvis de skal have breden 100x100 ?
Avatar billede kimox Nybegynder
24. april 2006 - 09:17 #7
men vil den stadig flytte min fil ?
Avatar billede jakobdo Ekspert
24. april 2006 - 09:19 #8
100,100 betyder max højde eller bredde.
Og ja, den skulle gerne flytte filen.
Nogle gange skal man flytte filen med move_uploaded_file() andre gange virker det uden.
Test det.
Avatar billede kimox Nybegynder
24. april 2006 - 09:26 #9
PERFEKT.. det virker jo kanon !!.. jeg har lige et enkelt spg. mere, det er helt ok hvis du ik vil svare på det, at jeg hellere skal åbne et nyt spørgsmål.

Men:

Hvis jeg gerne vil have billedet til at få et andet navn som er dynamisk f.eks:

team_[dato][tid+sek]

så der står: team_210406092615
hvis det er

d. 21/04-06
kl. 09:26:15
Avatar billede jakobdo Ekspert
24. april 2006 - 09:34 #10
Så laver du inden du kalder resize()
$upfil = "team_" . date('dmyHis');
resize(....);
Avatar billede kimox Nybegynder
24. april 2006 - 09:36 #11
$upfile = "team_" . date('dmyHis');
ikke? ;-P

Og tusind tak, smid et svar
Avatar billede kimox Nybegynder
24. april 2006 - 09:43 #12
Hmm den gider sku ik ændre navnet :/

  if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {
    if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {
      $uldir = '../virks_logo/';
      $ulfile = $uldir.basename($_FILES['upfile']['name']);
      $upfile = "team_" . date('dmyHis');
      resize($_FILES['upfile']['tmp_name'], $ulfile, 100, 50);
    }
Avatar billede jakobdo Ekspert
24. april 2006 - 09:53 #13
$ulfile = "team_" . date('dmyHis');
ikke $upfile
Avatar billede kimox Nybegynder
24. april 2006 - 09:59 #14
Hmm stadig ikke :/.

kan det ik have noget med dette at gøre:

$upfile = "http://$sti/web/virks_logo/" . $_FILES['upfile']['name'];

som står længere nede?
Avatar billede jakobdo Ekspert
24. april 2006 - 10:08 #15
Din kode skal lige rettes mere til.
Hvis du kigger i diret, hedder filerne så ikke team_15116545646
Avatar billede kimox Nybegynder
24. april 2006 - 10:10 #16
nej der ligger kun en der hedder "tester.jpg" som jeg har lagt op hvergang.

Skal jeg oprette en ny tråd ?
Avatar billede jakobdo Ekspert
24. april 2006 - 10:12 #17
Sådan her:

$uldir = '../virks_logo/';
$ulfile = "team_" . date('dmyHis');
resize($_FILES['upfile']['tmp_name'], $ulfile, 100, 100);

og længere nede:

$upfile = "http://$sti/web/virks_logo/" . $ulfile;
if($upfile == "http://teamvikaren.dk/web/virks_logo/")
{
    $upfile = "";
}
Avatar billede kimox Nybegynder
24. april 2006 - 10:17 #18
jeg har faktisk lige set nu, at den har lavet disse filer, bare i en forkert mappe.. nemlig mappen som programmeringen ligger i .. og så mangler den .jpg til sidst
Avatar billede jakobdo Ekspert
24. april 2006 - 10:21 #19
Sådan...
$ulfile = $uldir."team_" . date('dmyHis').".jpg";
Avatar billede kimox Nybegynder
24. april 2006 - 10:21 #20
nu skriver den det rigtige ind i min DB. men den mangler at rykke billede tilbage til "../virks_logo/" og så mangler den endelsen ".jpg"
Avatar billede jakobdo Ekspert
24. april 2006 - 10:22 #21
har du testet koden fra indlæg: 24/04-2006 10:21:07 ?
Avatar billede kimox Nybegynder
24. april 2006 - 10:22 #22
ah klart med $ulfile = $uldir."team_" . date('dmyHis').".jpg"; :D.... men så mangler den, den er move_uplo.... gør den ik ?
Avatar billede kimox Nybegynder
24. april 2006 - 10:23 #23
ja det har jeg
Avatar billede jakobdo Ekspert
24. april 2006 - 10:24 #24
Vis mig lige hele din kode nu.
Avatar billede kimox Nybegynder
24. april 2006 - 10:25 #25
ja det virker nu :D:D.. KANON !!!.. smider du et svar
Avatar billede jakobdo Ekspert
24. april 2006 - 10:52 #26
Svar!
Avatar billede kimox Nybegynder
24. april 2006 - 10:53 #27
sådan.

igen tak for det.

-lukket-
Avatar billede jakobdo Ekspert
24. april 2006 - 10:55 #28
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester