【发布时间】:2010-09-03 01:03:46
【问题描述】:
我有一个图像,我将使用它作为背景图像,并将从数据库中提取一些我想在此图像中显示的其他图像。因此,如果我只拉一张图像,我希望背景图像的底部在第一张图像之后关闭,如果有多个图像,那么我希望在显示这些图像后关闭它。不使用单独图像的问题是图像的边框具有设计格式,我无法单独显示它们。
看看这个image。左右边框的设计格式比只裁剪和使用要复杂得多。如果有任何动态图像调整大小的东西有什么建议吗?
【问题讨论】:
我有一个图像,我将使用它作为背景图像,并将从数据库中提取一些我想在此图像中显示的其他图像。因此,如果我只拉一张图像,我希望背景图像的底部在第一张图像之后关闭,如果有多个图像,那么我希望在显示这些图像后关闭它。不使用单独图像的问题是图像的边框具有设计格式,我无法单独显示它们。
看看这个image。左右边框的设计格式比只裁剪和使用要复杂得多。如果有任何动态图像调整大小的东西有什么建议吗?
【问题讨论】:
是的,有。查看imageXXXX 函数;您特别感兴趣的是imagecreate、imagecreatetruecolor、imagecreatefrompng、imagecopyresampled、imagecopyresized 和imagepng(假设您正在处理 PNG 图像 - jpeg 有类似的加载/保存功能、gif 和其他一些格式)。
【讨论】:
您应该尝试将GD extension 用于PHP,尤其是查看imagecopyresized()。这使您可以非常轻松地进行一些基本的图像转换和操作。
一个基本示例,它采用两个 GET 参数,调整 myImage.jpg 图像的大小并将其输出为 PNG 图像:
<?php
// width and height
$w = $_GET['w'];
$h = $_GET['h'];
// load image
$image = imagecreatefromjpeg('myImage.jpg');
// create a new image resource for storing the resized image
$resized = imagecreatetruecolor($w, $h);
// copy the image
imagecopyresized($resized, $image, 0, 0, 0, 0, $w, $h, imagesx($image), imagesy($image));
// output the image as PNG
header('Content-type: image/png');
imagepng($resized);
【讨论】:
'myImage.jpg' 或其他任何实际指向现有 JPEG 文件的内容吗?