arti1
6.02.2004, 19:11:14
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?
[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
7.02.2004, 11:35:54
[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
7.02.2004, 13:37:30
->>menic
jak wywolac ta funkcje? nie che mi dzialac
[php:1:edcdaa6e8a]<?php
thumb( "http://www.mojadomena.pl/img/galery/cc011307022004.jpg","0","0","galery/");
?>[/php:1:edcdaa6e8a]
co robie źle?
Nalfein][WR
7.02.2004, 13:59:27
Podajesz "0" i "0" zamiast docelowych wymiarów miniaturki?
menic
7.02.2004, 14:24:49
[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
7.02.2004, 14:52:48
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
7.02.2004, 16:09:45
a masz zainstalowaną bibliotekę gd2
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.