Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: miniaturki po raz setny
Forum PHP.pl > Forum > PHP
arti1
Problem jest krótki.
Mam panel do dodawania zdjęć i obrazków (formaty jpeg, gif, png, bmp).
Potrzebował bym jakiegoś uniwersalnego skryptu do tworzenia miniturek wszystkich formatów.
Do tej pory korzystałem z czegoś takiego:

[php:1:91744c8110]<?php
if ($plik == "image/pjpeg") {

$fol = "../img/galery"; // folder ze zdjęciami
$prfx = "min_"; // prefix poprzedzający nazwy miniaturek
$i = 0;

$org = imagecreatefromjpeg($fol."/".$plik);
$s_org = imagesx($org);
$w_org = imagesy($org);
$s_min = 100;
if(($w_min = floor(($s_min * $w_org) / $s_org)) > 150) $w_min = 150;
$min = imagecreate($s_min, $w_min);
imagecopyresized($min, $org, 0, 0, 0, 0, $s_min, $w_min, $s_org, $w_org);
imagedestroy($org);
imagejpeg($min, $fol."/".$prfx.$plik, 50);
imagedestroy($min);
}
?>[/php:1:91744c8110]

Z tym, ze ten skryp dzialal tylko dla jpegów. Dla gifów kiedys korzystalem z funkcji [php:1:91744c8110]<?php
createimageformgif
?>[/php:1:91744c8110]
no ale juz ona nie dziala. Co mi doradzicie?
Ozzy
[php:1:89ac3be90e]<?php
$img_size = getImageSize($path . $img[1]);

$source_x = $img_size[0];
$source_y = $img_size[1];
$source_type = $img_size[2];

if($source_x < $source_y) {
$dest_x = $n * $source_x/$source_y;
$dest_y = $n;
} else {
$dest_x = $n;
$dest_y = $n * $source_y/$source_x;
}

if(!file_exists($path .'mini/'. $img[1])) {

if($source_type == 1)
$source_id = @ImageCreateFromGIF($path . $img[1]);
elseif($source_type == 2)
$source_id = @ImageCreateFromJPEG($path . $img[1]);
elseif($source_type == 3)
$source_id = @ImageCreateFromPNG($path . $img[1]);

if($source_id) {

$target_id = ImageCreateTrueColor($dest_x, $dest_y);

$target_pic = ImageCopyResampled($target_id, $source_id, 0, 0, 0, 0, $dest_x, $dest_y, $source_x, $source_y);

[2];

...

ImageJpeg($target_id, $path .'mini/'. $img[1], 85);
?>[/php:1:89ac3be90e]

Tyle, że miniaturki tworzone są w jpg.
(to nie jest gotowy skrypt, tylko kawałek kodu, ale pozwoli Ci zobaczyć jak to można zrobić)
menic
[php:1:f9e88466c1]<?php
function thumb( $IMAGE_SOURCE,$THUMB_X,$THUMB_Y,$OUTPUT_FILE )
{


$BACKUP_FILE = $OUTPUT_FILE . "_backup.jpg";
copy( $IMAGE_SOURCE,$BACKUP_FILE );
$IMAGE_PROPERTIES = GetImageSize( $BACKUP_FILE );

if ( !$IMAGE_PROPERTIES[2] == 2 )
{
return( 0 );
}
else
{
switch( $GLOBALS['ext'] )
{
case 'jpg':
$SRC_IMAGE = ImageCreateFromJPEG( $BACKUP_FILE );
break;
case 'jpeg':
$SRC_IMAGE = ImageCreateFromJPEG( $BACKUP_FILE );
break;
case 'png':
$SRC_IMAGE = ImageCreateFromPNG( $BACKUP_FILE );
}

$SRC_X = ImageSX( $SRC_IMAGE );
$SRC_Y = ImageSY( $SRC_IMAGE );
if( ( $THUMB_Y == "0" ) && ( $THUMB_X == "0" ) )
{
return 0 ;
}
elseif( $THUMB_Y == "0" )
{
$SCALEX = $THUMB_X/( $SRC_X-1 );
$THUMB_Y = $SRC_Y*$SCALEX;
}
elseif( $THUMB_X == "0" )
{
$SCALEY = $THUMB_Y/( $SRC_Y-1 );
$THUMB_X = $SRC_X*$SCALEY;
}
$THUMB_X = ( int )( $THUMB_X );
$THUMB_Y = ( int )( $THUMB_Y );
$DEST_IMAGE = imagecreatetruecolor( $THUMB_X, $THUMB_Y );
unlink( $BACKUP_FILE );

if( !imagecopyresized( $DEST_IMAGE, $SRC_IMAGE, 0, 0, 0, 0, $THUMB_X, $THUMB_Y, $SRC_X, $SRC_Y ) )
{
imagedestroy( $SRC_IMAGE );
imagedestroy( $DEST_IMAGE );
return( 0 );
}
else
{
imagedestroy( $SRC_IMAGE );
switch( $GLOBALS['ext'] )
{
case 'jpg':
$Image = ImageJPEG( $DEST_IMAGE, $OUTPUT_FILE, 100 );
break;
case 'jpeg':
$Image = ImageJPEG( $DEST_IMAGE, $OUTPUT_FILE, 100 );
break;
case 'png':
$Image = ImagePNG( $DEST_IMAGE, $OUTPUT_FILE );
}
if ( $Image )
{
imagedestroy( $DEST_IMAGE );
return 1 ;
}
imagedestroy( $DEST_IMAGE );
}
return 0 ;
}

} # end createthumb
?>[/php:1:f9e88466c1]
arti1
->>menic

jak wywolac ta funkcje? nie che mi dzialac sad.gif


[php:1:edcdaa6e8a]<?php
thumb( "http://www.mojadomena.pl/img/galery/cc011307022004.jpg","0","0","galery/");

?>[/php:1:edcdaa6e8a]

co robie źle?
Nalfein][WR
Podajesz "0" i "0" zamiast docelowych wymiarów miniaturki?
menic
[php:1:71db699e14]<?php
thumb('plik_do_pomniejszenia.jpg', szerokosc, wysokosc, 'plik_pomniejszony.jpg')
?>[/php:1:71db699e14]szerokosc i wysokosc to wymiary nowej miniaturki
arti1
wpisuje:

[php:1:35e6b8835f]<?php
thumb('sr2c-rewers.jpg','150','100','aaa.jpg');

?>[/php:1:35e6b8835f]
i nie dziala

wyskakuja bledy:
[php:1:35e6b8835f]<?php
Warning: imagesx(): supplied argument is not a valid Image resource in .../img/test.php on line 29

Warning: imagesy(): supplied argument is not a valid Image resource in .../img/test.php on line 30

Warning: imagecopyresized(): supplied argument is not a valid Image resource in .../img/test.php on line 51

Warning: imagedestroy(): supplied argument is not a valid Image resource in .../img/test.php on line 53
?>[/php:1:35e6b8835f]
menic
a masz zainstalowaną bibliotekę gd2 questionmark.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.