|
| baggrund i GD-genereret billede Fra : Brian Emilius |
Dato : 20-12-03 14:42 |
|
Hej NG
Jeg har et script, der genererer thumbnails on the fly, som virker helt
fint.
Men! Jeg kunne godt tænke mig, at hvert billede får en sort baggrund, når en
af siderne er mindre end 150px, som er størrelsen (150x150) på
thumbnails'ne.
Nogen der har et forslag til, hvordan det kan gøres???
Jeg har lagt et eks. ud her:
http://www.emilius.dk/cabricoon.dk/thumbnail.phps
Venlig hilsen
Brian Emilius
| |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 15:25 |
|
Brian Emilius wrote:
> Hej NG
>
> Jeg har et script, der genererer thumbnails on the fly, som virker
> helt fint.
> Men! Jeg kunne godt tænke mig, at hvert billede får en sort baggrund,
> når en af siderne er mindre end 150px, som er størrelsen (150x150) på
> thumbnails'ne.
> Nogen der har et forslag til, hvordan det kan gøres???
Sådanne:
$BackgroundColor = ImageColorAllocate ($NewImage, 0, 0, 0);
ImageFill ($NewImage, 0, 0, $BackgroundColor);
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
Brian Emilius (20-12-2003)
| Kommentar Fra : Brian Emilius |
Dato : 20-12-03 17:46 |
|
> $BackgroundColor = ImageColorAllocate ($NewImage, 0, 0, 0);
> ImageFill ($NewImage, 0, 0, $BackgroundColor);
Kan jeg ikke lige få dig til at skrive, hvor og i hvilken sammenhæng, jeg
skal indsætte ovenstående kode?
Venlig hilsen og på forhånd tak
Brian Emilius
| |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 18:38 |
|
Brian Emilius wrote:
>> $BackgroundColor = ImageColorAllocate ($NewImage, 0, 0, 0);
>> ImageFill ($NewImage, 0, 0, $BackgroundColor);
>
> Kan jeg ikke lige få dig til at skrive, hvor og i hvilken sammenhæng,
> jeg skal indsætte ovenstående kode?
Nu hvor du ikke selv gidder.....:
$BackgroundColor = ImageColorAllocate ($tmp_img, 0, 0, 0);
ImageFill ($tmp_img, 0, 0, $BackgroundColor);
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height,
$width, $height);
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
Brian Emilius (20-12-2003)
| Kommentar Fra : Brian Emilius |
Dato : 20-12-03 19:10 |
|
> Nu hvor du ikke selv gidder.....:
>
> $BackgroundColor = ImageColorAllocate ($tmp_img, 0, 0, 0);
> ImageFill ($tmp_img, 0, 0, $BackgroundColor);
> imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height,
> $width, $height);
Hej Dan
Det er fedt at du gider hjælpe, men det virker bare ikke helt endnu...
eksempelkode: http://emilius.dk/cabricoon.dk/thumbnail.phps
reelle side (den der viser billederne):
http://emilius.dk/cabricoon.dk/gallery.php?name=Gacias%20Baloo&book=fdlo119222
Kan jeg ikke lige få dig til at se på det igen?
På forhånd tak
Brian Emilius
| |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 19:22 |
|
Brian Emilius wrote:
>> Nu hvor du ikke selv gidder.....:
>>
>> $BackgroundColor = ImageColorAllocate ($tmp_img, 0, 0, 0);
>> ImageFill ($tmp_img, 0, 0, $BackgroundColor);
>> imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height,
>> $width, $height);
>
> Hej Dan
> Det er fedt at du gider hjælpe, men det virker bare ikke helt endnu...
> eksempelkode: http://emilius.dk/cabricoon.dk/thumbnail.phps
> reelle side (den der viser billederne):
>
http://emilius.dk/cabricoon.dk/gallery.php?name=Gacias%20Baloo&book=fdlo119222
>
> Kan jeg ikke lige få dig til at se på det igen?
Er det fordi du kun vil have billeder der er 150x150?
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
Brian Emilius (20-12-2003)
| Kommentar Fra : Brian Emilius |
Dato : 20-12-03 19:28 |
|
> Er det fordi du kun vil have billeder der er 150x150?
Jeg vil gerne have at billederne bliver minimeret med bevarelse af
højde-bredde forhold (det er sådan som det er nu). Men hvis et minimeret
billede fx er 100x150px, så vil jeg gerne have at det rasterende område
bliver sort, sådan at alle billeder er 150x150px, men centreret på en sort
baggrund...
| |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 19:33 |
|
Brian Emilius wrote:
>> Er det fordi du kun vil have billeder der er 150x150?
>
> Jeg vil gerne have at billederne bliver minimeret med bevarelse af
> højde-bredde forhold (det er sådan som det er nu). Men hvis et
> minimeret billede fx er 100x150px, så vil jeg gerne have at det
> rasterende område bliver sort, sådan at alle billeder er 150x150px,
> men centreret på en sort baggrund...
Altså lige som her: http://beyond.repair.dk/Sample/PhotoAlbumBeta/ ?
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
Brian Emilius (20-12-2003)
| Kommentar Fra : Brian Emilius |
Dato : 20-12-03 19:36 |
| | |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 19:37 |
| | |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 20:06 |
|
Ikke testet:
<?php
# Constants
define(IMAGE_BASE, '/sti/emilius.dk/cabricoon.dk/images');
define(MAX_WIDTH, 150);
define(MAX_HEIGHT, 150);
# Get image location
$image_file = str_replace('..', '', $_SERVER['QUERY_STRING']);
$image_path = IMAGE_BASE . "/$image_file";
# Load image
$img = null;
$ext = strtolower(end(explode('.', $image_path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
$img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'png') {
$img = @imagecreatefrompng($image_path);
}
# If an image was successfully loaded, test the image for size
if ($img) {
# Get image size and scale ratio
$width = imagesx($img);
$height = imagesy($img);
# If the image is larger than the max shrink it
if ($width > $height) {
$new_width = MAX_WIDTH;
$new_hight = ceil($height/($width/MAX_WIDTH));
$hightoffset = ceil((MAX_HEIGHT-$new_hight)/2);
}
else {
$new_hight = MAX_HEIGHT;
$new_width = ceil($width/($height/MAX_HEIGHT));
$widthoffset = ceil((MAX_WIDTH-$new_width)/2);
}
# Create a new temporary image
$tmp_img = imagecreatetruecolor(MAX_WIDTH, MAX_HEIGHT);
# Copy and resize old image into new image
$backgroundcolor = ImageColorAllocate ($tmp_img, 0, 0, 0);
ImageFill ($tmp_img, 0, 0, $backgroundcolor);
imagecopyresized($tmp_img, $img, $widthoffset, $hightoffset, 0, 0,
$new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
}
# Create error image if necessary
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);
}
# Display the image
header("Content-type: image/jpeg");
imagejpeg($img);
?>
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
Brian Emilius (20-12-2003)
| Kommentar Fra : Brian Emilius |
Dato : 20-12-03 20:29 |
|
Det gav bare sorte billeder...
| |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 21:01 |
|
Og dette:<?php
# Constants
define(IMAGE_BASE, '.');
define(MAX_WIDTH, 150);
define(MAX_HEIGHT, 150);
# Get image location
$image_file = str_replace('..', '', $_SERVER['QUERY_STRING']);
$image_path = IMAGE_BASE . "/$image_file";
# Load image
$img = null;
$ext = strtolower(end(explode('.', $image_path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
$img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'png') {
$img = @imagecreatefrompng($image_path);
}
# If an image was successfully loaded, test the image for size
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);
$hightoffset = ceil((MAX_HEIGHT-$new_height)/2);
$widthoffset = ceil((MAX_WIDTH-$new_width)/2);
# Create a new temporary image
$tmp_img = imagecreatetruecolor(MAX_WIDTH, MAX_HEIGHT);
# Copy and resize old image into new image
$BackgroundColor = ImageColorAllocate ($tmp_img, 0, 0, 0);
ImageFill ($tmp_img, 0, 0, $BackgroundColor);
imagecopyresized($tmp_img, $img, $widthoffset, $hightoffset, 0, 0,
$new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
}
}
# Create error image if necessary
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);
}
# Display the image
header("Content-type: image/jpeg");
imagejpeg($img);
?>
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
Brian Emilius (20-12-2003)
| Kommentar Fra : Brian Emilius |
Dato : 20-12-03 21:46 |
|
Yes! nu er den der!!!
Mange tak for hjælpen. Der er altid rart, når der er nogen der gider ta' sig
tid til at hjælpe os newbies lidt... Tak skal du ha'
Venlig hilsen
Brian Emilius
| |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 21:48 |
|
Brian Emilius wrote:
> Yes! nu er den der!!!
>
> Mange tak for hjælpen. Der er altid rart, når der er nogen der gider
> ta' sig tid til at hjælpe os newbies lidt... Tak skal du ha'
>
> Venlig hilsen
> Brian Emilius
No problem.... dog er der ander fejl i det script... ved ikke om det er med
vilje den bare skal lave en sort firkant hvis billedet ikke er der.... ser
dumt ud...
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
Dan Molberg (20-12-2003)
| Kommentar Fra : Dan Molberg |
Dato : 20-12-03 21:56 |
|
Dan Molberg wrote:
> Brian Emilius wrote:
>> Yes! nu er den der!!!
>>
>> Mange tak for hjælpen. Der er altid rart, når der er nogen der gider
>> ta' sig tid til at hjælpe os newbies lidt... Tak skal du ha'
>>
>> Venlig hilsen
>> Brian Emilius
> No problem.... dog er der ander fejl i det script... ved ikke om det
> er med vilje den bare skal lave en sort firkant hvis billedet ikke er
> der.... ser dumt ud...
Så jeg ville nok have noget ala:
<?php
# Constants
define(IMAGE_BASE, '.');
define(MAX_WIDTH, 150);
define(MAX_HEIGHT, 150);
# Get image location
$image_file = str_replace('..', '', $_SERVER['QUERY_STRING']);
$image_path = IMAGE_BASE . "/$image_file";
# Load image
$img = null;
$ext = strtolower(end(explode('.', $image_path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
$img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'png') {
$img = @imagecreatefrompng($image_path);
}
# If an image was successfully loaded, test the image for size
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);
$heightoffset = ceil((MAX_HEIGHT-$new_height)/2);
$widthoffset = ceil((MAX_WIDTH-$new_width)/2);
# Create a new temporary image
$tmp_img = imagecreatetruecolor(MAX_WIDTH, MAX_HEIGHT);
# Copy and resize old image into new image
$backgroundcolor = imagecolorallocate ($tmp_img, 0, 0, 0);
imagefill ($tmp_img, 0, 0, $backgroundcolor);
imagecopyresized($tmp_img, $img, $widthoffset, $heightoffset, 0, 0,
$new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
}
}
# Create error image if necessary
if (!$img) {
$img = imagecreate(MAX_WIDTH, MAX_HEIGHT);
$backgroundcolor = imagecolorallocate($img,0,0,0);
imagefill ($img, 0, 0, $backgroundcolor);
$crosscolor = imagecolorallocate($img,255,0,0);
imagefilledpolygon($img, array(10, 0, MAX_WIDTH, MAX_HEIGHT-10,
MAX_WIDTH-10, MAX_HEIGHT, 0, 10), 4, $crosscolor);
imagefilledpolygon($img, array(0, MAX_HEIGHT-10, MAX_WIDTH-10, 0,
MAX_WIDTH, 10, 10, MAX_HEIGHT), 4, $crosscolor);
}
# Display the image
header("Content-type: image/jpeg");
imagejpeg($img);
?>
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
// Overby (21-12-2003)
| Kommentar Fra : // Overby |
Dato : 21-12-03 19:00 |
|
> Jeg har et script, der genererer thumbnails on the fly, som virker helt
> fint.
Fra et resourcemæssigt synspunkt er det meget uklogt at lave dem on-the-fly.
Hvorfor ikke lave dem én gang, når billederne uploades?
/Daniel
| |
|
|