image resize in tag <img src ...
jimbob
- php
ich habe folgende function gebastelt!
denk das sie im grunde okay ist nur ein problem hab ich ....
ich will die funtion im tag benutzen!
<img src=".make_thumb(??)">
nur wie kann ich dies nun machen? weil den header wie bis dato mitsenden ist nicht möglich!!! weil schon ein header gesendet wurde!
<?PHP
function make_thumb($path)
{
//START FUNCTION
//$path= "/user".$path;
define(MAX_WIDTH, 150);
define(MAX_HEIGHT, 150);
$img = null;
$ext = strtolower(end(explode('.', $path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
$img = @imagecreatefromjpeg($image_path);
}
else if ($ext == 'png') {
$img = @imagecreatefrompng($image_path);
}
else if ($ext == 'gif') {
$img = @imagecreatefrompng($image_path);
}
if ($img) {
# Get image size and scale ratio
$width = imagesx($img);
$height = imagesy($img);
$scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);
# If the image is larger than the max shrink it
if ($scale < 1) {
$new_width = floor($scale*$width);
$new_height = floor($scale*$height);
# Create a new temporary image
$tmp_img = imagecreatetruecolor($new_width, $new_height);
# Copy and resize old image into new image
imagecopyresized($tmp_img, $img, 0, 0, 0, 0,
$new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
}
}
if (!$img)
{
$img = imagecreate(MAX_WIDTH, MAX_HEIGHT);
imagecolorallocate($img,0,0,0);
$c = imagecolorallocate($img,70,70,70);
imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2);
imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2);
}
echo $path;
header("Content-type: image/jpeg");
imagejpeg($img);
//END FUNCTION
}
?>
<html>
<head></head>
<body>
<?php
echo "<img src=".make_thumb("???").">;";
?>
</body>
</html>
Hi,
<img src=".make_thumb(??)">
Im src-Attribut steht nicht das Bild selbst, sondern dessen URL!
cu,
Andreas
Hello,
wieso wurde schon ein Header gesendet? Das <img src="..."> stellt doch einen eigenen Request dar, und den beantwortet der Server mit einem eigenen Header nur für Den Bilddatenstrom.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi,
wieso wurde schon ein Header gesendet? Das <img src="..."> stellt doch einen eigenen Request dar, und den beantwortet der Server mit einem eigenen Header nur für Den Bilddatenstrom.
Weil hier versucht wird, das Bild in der selben Response auszuliefern wie die Seite selbst.
jimbob versucht ja, im src-Attribut das Bild auszuliefern, statt dort wie in HTML vorgesehen die URL des Bildes anzugeben (was dann den Browser veranlassen würde, einen neuen Request für das Bild auszuliefern).
HTTP funktioniert so, daß pro Request genau eine Antwort erfolgen kann, nicht mehrere.
cu,
Andreas
Hi,
jimbob versucht ja, im src-Attribut das Bild auszuliefern, statt dort wie in HTML vorgesehen die URL des Bildes anzugeben (was dann den Browser veranlassen würde, einen neuen Request für das Bild auszuliefern).
Korrektur: "auszuliefern" durch "abzusetzen" ersetzen.
cu,
Andreas