php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.07.2004, 23:36  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard bilder...speicher problem...

ich habe jetzt das schript das ein bild als wasserzeichen über das andere bild legt.

mache ich das jetzt mit einem 200kb bilöd, funzt das sehr gut.
mache ich das aber mit einem 2mb großen bild, will er mehr als den zugewiesenen speicher von 8 mb pro script benutzen.

wenn ich jetzt mit GD das bild auch noch verkleinern möchte (800x600px), braucht der dann noch mehr speicher, oder hilft das mehr bei dem speicherproblem, das er dann weniger braucht, weil das bild ja dann kleiner wird?
Sclot ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.07.2004, 23:39  
Gast
 
Beiträge: n/a
Standard

ich denke mal, dass wenn du das bild erst verkleinerst und dann das wasserzeichen drauf machst es sicher besser für den speicher sein wird!

btw: könntest du evtl das script veröffentlichen? oder per pn versenden? wär dir sehr dankbar!

sc911
 
Alt 19.07.2004, 03:06  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard

ich muss es sowieso machen, damit ihr mir sagen könnt wo genau wich das mit den verkleinern hinsetzen muss
und vor allem wie das genau aussieht..

also:

Code:
<?
$date = date("d.m.Y - H:i:s");

// verbindung zur datenbak herstellen
include( "config.php" );
$db = mysql_connect("$dbs","$dbuser","$dbpwd") or die ("konnte Keine Verbindung herstellen!");
mysql_select_db("$dbb",$db);

if ($action == 'eintragen')
{
mysql_query("INSERT INTO kommentare (id,bild,name,datum,kommentar) VALUES ('','$album/$bild','$name','$date','$kommentar')"); 
}
?>

<html>
<head>
<link rel="stylesheet" type="text/css" href="../format.css" >
</head>
<body>
<center><font size="3"><u>Bilder</u></font>

<?
// hier werden die pageviews hochgezählt
$pv = mysql_fetch_object(mysql_query("Select aufgerufen from counter WHERE bild='$album/$bild' "));
$npv = $pv->aufgerufen + 1;
if ($pv == '') 
{
mysql_query("INSERT INTO counter (id,bild,aufgerufen) VALUES ('','$album/$bild','$npv')"); 
}
else 
{
mysql_query("Update counter SET aufgerufen='$npv' WHERE bild='$album/$bild' ");
}

@unlink("tmp_$bild");

function watermark($image, $watermark, $save_as, $position=5, $transparency=50, $t_x=0, $t_y=0) {

if(!file_exists($image) || !file_exists($watermark))
return FALSE;
$infos_img = getimagesize($image);
$infos_wat = getimagesize($watermark);
if(!in_array($infos_img[2], array(2,3)) || !in_array($infos_wat[2], array(2,3)))
return FALSE;
if($infos_img[0]<$infos_wat[0] || $infos_img[1]<$infos_wat[1])
return FALSE;
if($infos_wat[0]<$t_x || $infos_wat[1]<$t_y)
return FALSE;
$transparency = 100 - $transparency;
if($transpareny < 0 || $transpareny > 100)
return FALSE;
@unlink($save_as);

// Position x 
switch (($position-1)%3) {
case 0: 
$pos_x = 0;
break;
case 1:
$pos_x = round(($infos_img[0]-$infos_wat[0])/2, 0);
break;
case 2:
$pos_x = $infos_img[0]-$infos_wat[0];
break;
}
// Position y
switch (floor(($position-1)/3)) {
case 0: 
$pos_y = 0;
break;
case 1:
$pos_y = round(($infos_img[1]-$infos_wat[1])/2, 0);
break;
case 2:
$pos_y = $infos_img[1]-$infos_wat[1];
break;
}

$img_image = imagecreatefromjpeg($image);
$img_watermark = imagecreatefrompng($watermark);
imagealphablending($img_image, TRUE);
imagealphablending($img_watermark, TRUE);
imagecolortransparent($img_watermark, imagecolorat($img_watermark, $t_x, $t_y));
imagecopymerge($img_image, $img_watermark, $pos_x, $pos_y, 0, 0, $infos_wat[0], $infos_wat[1], $transparency);
if(strtolower(substr($save_as, -3)) == "png") {
if(imagepng($img_image, $save_as))
return TRUE;
else
return FALSE;
} else {
if(imagejpeg($img_image, $save_as))
return TRUE;
else
return FALSE;
}
return FALSE;
}


echo "<table width=\"90%\" border=0><tr><td>";
echo "<a href=\"index.php\">Index</a> | <a href=\"album.php?album=$album\">$album</a> |$bild
";
echo "</td></tr></table>

";
echo "<table width=\"90%\" border=0><tr><td>";
if(watermark("$album/$bild", "logo.png", "tmp_$bild", 9))
echo "<center><img style=\"border: 1px solid #ffffff\" src=\"tmp_$bild\" witdh=\"700\" height=\"500\"></center>


";

?>


<? 
$result = mysql_query("SELECT * FROM kommentare WHERE bild LIKE '$album/$bild' ORDER BY datum DESC", $db);
		while ($liste = mysql_fetch_array($result))
		{
		echo "<center><table bgcolor=\"000000\" width=\"60%\" border=0 cellspacing=1 cellpadding=4>
			<tr bgcolor=\"222222\"><td width=\"15%\">Name</td><td>$liste[2]</td></tr>
			<tr bgcolor=\"222222\"><td width=\"15%\">Datum</td><td>$liste[3]</td></tr>
			<tr bgcolor=\"222222\"><td width=\"15%\">Kommentar</td><td><pre>$liste[4]</pre></td></tr>
			</table>

</center>";
		}
mysql_close($db); 
?>
<center>
<form action="<? echo "$_server[PHP_SELF]"; ?>" method="post">

<table bgcolor="#000000" width="60%" border="0" cellspacing="1" cellpadding="4">
<tr bgcolor="#222222">
<td>Name</td>
<td><input name="name" size=20 value=""></td>
</tr>

<tr bgcolor="#222222">
<td>Kommentar</td>
<td><textarea name="kommentar" cols=30 rows=5 wrap=soft></textarea></td>
</tr>

<tr bgcolor="#222222">
<td colspan="2">
<input type="hidden" value="ok" name="send_status">
<input type="hidden" name="action" value="eintragen">
<input type="submit" value="eintragen">
</td>
</tr>          
      </table>
</center>
</form>
</td></tr></table>

</body>
</html>
bitte nicht hauen... ich bin zu faul zum kommentieren
ja... wenn einer ne isee hat wo genau was hinkommt, der sagt bitte bescheid.

das komplette script seht ihr wenn ihr auf www.sky-pixx.de geht und dann auf "bilder"
Sclot ist offline  
Alt 19.07.2004, 11:10  
Gast
 
Beiträge: n/a
Standard

ich geh mal davon aus, dass du die bilder so wie sie von der digicam kommen hochladen willst und sie dann auf dem server verkleinerst, oder?
würd ich nicht machen! macht nur viel traffic, dauert lang es hochzuladen (gut, mit dsl nicht) und man kann es genau so gut auch auf dem lokalen rechner machen! zb mit photostudio (http://www.stuffware.co.uk/photostudio/) das verkleinert dir alle photos in einem verzeichniss UND behält dabei die exif-infos bei!
ich hatte bei meinem bilderalbum auch den plan, es auf dem server zu schrumpfen, aber dank isdn bin ich dann zum schluss gekommen, lieber die bilder vorher zu verkleinern. hab mir dann noch ne unzip-funktion in php gebastelt, damit ich nur eine datei hochladen muss und nicht 10 einzelne bilder (komprimieren kann man ja die bilder nicht wirklich) und dann war das wunderbar!

sc911
 
Alt 19.07.2004, 11:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard

jup.. recht hast du...
ich verkleiner sie ja auch schon vorher.. haben dann gut 120-200kb...
aber ab und zu hab ich bemerkt kommt da ein bild dazwischen, das eben doch noch die originalgrösse hat...
weisst ja bestimmt wie das mit der ordnung aufm eigenen rechner is
Sclot ist offline  
Alt 19.07.2004, 19:36  
Gast
 
Beiträge: n/a
Standard

ja, und denk auch dran, dass du evtl. mal bilder im urlaub hochlädst, wo du i internetcaffee sitzt und keine möglichkeit hast, sie vorher zu verkleinern.

ich finde deinen code etwas verwirrend und unstrukturiert (sorry).
zb würde ich, wenn ich die funktionen nicht sowieso in einen extra file machen würde, die funktion ans ende der datei schreiben.
zudem magst du wohl auch kein einrücken, oder?

ok, hier mal nen code aus meinem script, wie ich meine thumbs mache:
Code:
        $imgsize = GetImageSize($source);
        $width = $imgsize[0];
        $height = $imgsize[1];
        $aspect_ratio = ($height/$width);
        if ($width > $height) {
            $new_width = $thumb_witdh;
            $new_height =  ceil($new_width*$aspect_ratio);
        } elseif ($width < $height) {
            $new_height = $thumb_height;
            $new_width =  ceil($new_height/$aspect_ratio);
        } else {
            $new_width = $thumb_witdh;
            $new_height = $thumb_height;
        }
        $im = ImageCreateFromJPEG($source);
        $new_im = ImageCreateTruecolor($new_width,$new_height);
        ImageCopyResampled($new_im,$im,0,0,0,0,$new_width,$new_height,ImageSX($im),ImageSY($im));
        $ok = ImageJPEG($new_im,$dest,75);
        imagedestroy($im);
        imagedestroy($new_im);
$source ist dabei der ausgangsdateiname, $dest das endbild. evtl willst du eine bessere img-qualität, dann ändere die 75 im ImageJPEG auf 100.

und das ganze würde ich vor der zeile
Code:
$img_image = imagecreatefromjpeg($image);
laufen lassen.

hoffe mal, dass dir das hilft!

sc911
 
Alt 19.07.2004, 19:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard

danke erstmal.. das werd ich nacher gleich mal probieren...

mit dem code hast du recht..
er soll halt funktionieren.. ich hab nicht die nerven dazu irgendwas einzurücken oder zu kommentieren :/

aber sage mal...
das programm wo du mir den link gegeben hast...
diesen photo studio...
also ich hab das jetzt ausprobiert, bei mir speichet das beim kleiner machen aber nicht die exif infos mit :/

kannst mir mal erklären wie du das macsht?

danke
Sclot ist offline  
Alt 19.07.2004, 20:10  
Gast
 
Beiträge: n/a
Standard

hm, hab das mal ausprobiert: bei mir geht da nix verloren! hattest du evtl keine exif infos drin im bild
hier noch schnell ne anleitung, wie ich mir das programm eingestellt habe (ändert nix an dem exif problem):
  • File-Browse Ordner mit den kopierten Bildern auswählen
  • alle markieren und Browse-Scale-Other auswählen
  • Scale-Mode: Frame dimensions
    Filter: Box
    Frame mode: Best fit
    Dimensions: 800 x 800 (-> dann werden Panoramabilder 800x600 und Porträtbilder 600x800)
  • Browse-Save Changes

sc911
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder ohne DB sicher speichern Diet PHP Tipps 2005 6 25.03.2009 00:07
[Erledigt] Galerie - Bilder nebeneinander Problem noOx PHP Tipps 2008 14 03.07.2008 23:48
Bilder hochladen und speicher Zabimaru PHP Tipps 2008 7 09.04.2008 17:58
Zip Archiv entpacken und Bilder verkleinern Simon9990 PHP Tipps 2008 5 08.10.2007 00:32
Problem mit Fileupload (2 Bilder), Pfadübergabe an Mysql-DB shyrin PHP Tipps 2007 5 20.06.2007 21:48
CSS Problem beim Bilder Rahmen. c01001 HTML, Usability und Barrierefreiheit 10 24.01.2007 03:02
Bilder löschen PHP Tipps 2005-2 4 24.10.2005 11:37
Mehrere Bilder Hochladen und bearbeiten PHP Tipps 2005-2 7 23.07.2005 13:48
Problem mit Bilder einfügen Script PHP Tipps 2005-2 3 21.07.2005 00:28
Bilder in Tabellen nixdorf HTML, Usability und Barrierefreiheit 36 09.05.2005 21:15
[Erledigt] Bilder frei positionieren und von Text umfließen lassen. HTML, Usability und Barrierefreiheit 10 24.04.2005 00:05
Bilder Upload Problem unter Firefox... becks123 PHP Tipps 2005 19 16.04.2005 12:12
Generiertes Bild im Speicher cachen Ypsillon PHP Tipps 2005 3 04.03.2005 19:15
Bilder aus der Datenbank Skazi Datenbanken 2 09.02.2005 13:42
[Erledigt] bilder Qualtiät HTML, Usability und Barrierefreiheit 6 29.06.2004 20:08

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bilder speicher de image 800, bilder-speicher.de upload funktioniert nicht, bilder-speicher.de upload probleme, php bilder speicher kleiner, \bilder-speicher\ bilder laden nicht, gd speicherproblem php

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.