2

ランダムなファイル名を持つサイトに多数の画像をアップロードしています。

http://www.mysite.com/uploads/images/apicture23.jpg
http://www.mysite.com/uploads/images/anotherpicture203.jpeg
http://www.mysite.com/uploads/images/another.picture203.png
http://www.mysite.com/uploads/images/athird-picture101.gif

PHPで、URLのファイル拡張子 ( .jpg.jpeg .pngまたは) 部分の直前に何らかの方法で別の文字列を挿入することは可能ですか?.gif-300x200

4

2 に答える 2

5
$out = preg_replace('/\.[a-z]+$/i','-300x200\0',$in);

これは基本的にこれを行い、左から右に読みます。

ドット()で始まり、文字列の末尾()で大文字と小文字を区別しない()の範囲内の\.1つ以上の( )文字が続き、その後に一致した文字列の部分()が続くものを置き換えます。+a-z$i-300x200\0

于 2012-11-02T01:31:57.660 に答える
1

画像をアップロードするときにファイル名を変更したい場合は、次のクラスが役立ちます。

<?php

    function thumbnail( $img, $source, $dest, $maxw, $maxh ) {      
        $jpg = $source.$img;

        if( $jpg ) {
            list( $width, $height  ) = getimagesize( $jpg ); //$type will return the type of the image
            $source = imagecreatefromjpeg( $jpg );

            if( $maxw >= $width && $maxh >= $height ) {
                $ratio = 1;
            }elseif( $width > $height ) {
                $ratio = $maxw / $width;
            }else {
                $ratio = $maxh / $height;
            }

            $thumb_width = round( $width * $ratio ); //get the smaller value from cal # floor()
            $thumb_height = round( $height * $ratio );

            $thumb = imagecreatetruecolor( $thumb_width, $thumb_height );
            imagecopyresampled( $thumb, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height );

            $path = $dest.$img."-300x200.jpg";
            imagejpeg( $thumb, $path, 75 );
        }
        imagedestroy( $thumb );
        imagedestroy( $source );
    }

?>

どこ

      $img         => image file name
      $source      => the path to the source image
      $dest        => the path to the destination image
      $maxw        => the maximum of the image width you desire
      $maxh        => the minimum one
于 2012-11-02T01:40:25.127 に答える