Lập trình viên PHP chắc không ít anh chị phải đau đầu vì cái vụ tạo ảnh thumbnail sao khi mà người dùng lúc thì post ảnh GIF, lúc lại JPEG, PNG…. lại còn cái vụ thu nhỏ ảnh (scale) sao cho đúng tỉ lệ và kích thức yêu cầu mà không làm vỡ ảnh nữa chứ :cry: . Hôm nay giới thiệu với mọi người một script khá ngon ăn viết bằng php dùng tạo thumbnail cho hình ảnh, đó là phpThumb.Mời mọi người xem demo ở đây.
Vài dòng giới thiệu từ tác giả (đọc tiếng Anh để luyện kungfu luôn hen ;)) .
phpThumb() uses the GD library to create thumbnails from images (JPEG, PNG, GIF, BMP, etc) on the fly. The output size is configurable (can be larger or smaller than the source), and the source may be the entire image or only a portion of the original image. True color and resampling is used if GD v2.0+ is available, otherwise paletted-color and nearest-neighbour resizing is used. ImageMagick is used wherever possible for speed. Basic functionality is available even if GD functions are not installed (as long as ImageMagick is installed). One demo file uses portions of Javascript API by James Austin.
Supported source image formats:
- JPEG (via GD or ImageMagick)
- PNG (via GD or ImageMagick)
- GIF (via GD, ImageMagick, or phpthumb.gif.php)
- BMP (via ImageMagick or phpthumb.bmp.php)
- any image format ImageMagick can read
Supported output image formats:
- JPEG (via GD or ImageMagick)
- PNG (via GD or ImageMagick)
- GIF (via GD or ImageMagick)
- BMP (via ImageMagick or phpthumb.bmp.php)
- ICO (via ImageMagick or phpthumb.ico.php)
Image processing features:
- Source image can be a physical file on the local server, remote file over HTTP, or can be retrieved from a database.
- GIFs are supported on all versions of GD (even if GD does not have native GIF support) thanks to the GIF Util class by Fabien Ezber, or by ImageMagick.
- BMP source images can be used even if ImageMagick is not available.
- ImageMagick (if available) can be called to generate thumbnails for source images larger than PHP’s memory limitation would allow a GD-only thumbnailer to do, or for image formats that GD does not support.
- phpThumb’s basic features will work even if the server has no GD support, as long as ImageMagick is installed
- HTTP thumbnail creation can be limited to the current (or other list of) domain to prevent other sites from using your server to create their thumbnails.
- Linking to thumbnails from another domain can be prevented or watermarked.
- Thumbnails can be cached for less server load. Mulitple sizes of any source image can be cached seperately. Thumbnails are automatically updated when (local) source image is modified.
- Embedded EXIF thumbnails (if available) can be extracted as-is, or used as the source image for thumbnailing if the real source image would take more memory than PHP has available.
- Images can be rotated, either by an arbitary angle or auto-rotated to either portrait or landscape.
- Images can be cropped, either by a specified number of pixels or by a percentage of original image.
- Output is antialiased into the alpha channel where appropriate when PNG output is selected.
- Quality can be auto-adjusted to fit a certain output byte size.
- A number of filters can be applied (most require GD v2.0+ and/or PHP v4.3+, or ImageMagick):
- A watermark image or text can be applied over the thumbnail in one of 10 positions or tiled.
- A border or frame can be applied.
- Thumbnails can be a fixed dimension regardless of source aspect ratio and background filled with configurable color. Border corners can optionally be rounded (independant horizontal & vertical radius)
- Unsharp Mask sharpening can be applied thanks to Torstein Hønsi’s phpUnsharpMask function.
- Other filters:
- Alpha channel mask from mask file
- Auto Contrast / Levels
- Bevel edge
- Blur
- Brightness
- Colorize to target color by amount
- Contrast
- Drop shadow
- Edge Detect
- Flip Horizontal / Vertical
- Gamma
- Grayscale
- Mean Removal
- Negative color
- Reduce Color Depth
- Rounded Corners
- Saturation
- Sepia
- Smooth
- Threshold
- White Balance
See the demo page for examples.
Mọi người thông cảm cho tớ vì tớ làm biếng dịch quá , có gì thì hỏi tớ trả lời ;):x