/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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

> Altså lige som her: http://beyond.repair.dk/Sample/PhotoAlbumBeta/ ?

Just præcis, bare uden skygge...



Dan Molberg (20-12-2003)
Kommentar
Fra : Dan Molberg


Dato : 20-12-03 19:37

Brian Emilius wrote:
>> Altså lige som her: http://beyond.repair.dk/Sample/PhotoAlbumBeta/ ?
>
> Just præcis, bare uden skygge...
Det er bare noget CSS....

Giv mig lige lidt tid til at finde rundt i din kode.... så skal jeg nok
passe det til....
--
MVH Dan Molberg
http://beyond.repair.dk/



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



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste