我正在构建一个Facebook应用程序,我需要将多个个人资料图片切换为一个大图片。有没有可能在PHP中的任何方式?如何在php中将多个图像拼接成单一图像?
0
A
回答
1
请参阅http://www.php.net/manual/en/function.imagecopy.php上的示例并多次使用imagecopy()
。
1
我对这个问题很陌生,但我正在开发一个脚本来拍摄图像并将它们缝合在一起。现在它只适用于所有图像尺寸相同的情况,但我正在努力改变这一点,并欢迎捐款。我用这个做CSS图像悬停/非悬停状态的图形网站:
https://github.com/ElusiveMind/image_stitch
/**
* Image stitching function.
*
* Now operates with images of varying heights as well as widths.
*
* @param array $files
* An array of files. Each element is a path to the file in question.
*
* @param int $rows
* The number of rows the end resulting image will have. The images
* will be added to the new image in the order of the array divided
* equally in number to the rows specified here.
*
* @param int $action
* An integer (or static define) of the action to take on the resulting
* image.
* IMAGE_STITCH_DISPLAY - Display the item (default action).
* IMAGE_STITCH_SAVE - Save the image to the file system (path required).
* IMAGE_STITCH_RETURN - Return the resulting file pointer to the calling
* function for processing there.
*
* @param string $path
* The path of where to save the resulting new image.
*
* @return image $image
* The image data that can have whatever done to it.
*/
function image_stitch($files, $rows = 2, $action = IMAGE_STITCH_DISPLAY, $path = NULL) {
foreach($files as $file) {
$path = explode('.', $file);
if ($path[count($path)-1] == 'png') {
$images[] = imagecreatefrompng($file);
}
else {
$images[] = imagecreatefromjpeg($file);
}
}
$number_of_images = count($images);
$number_of_columns = ($number_of_images/$rows) - 1;
$total_width = 0;
$max_width = 0;
$total_heights = array();
$widths = array(array());
$grid = array(array());
for ($y = 1; $y <= $rows; $y++) {
$this_height = $this_width = 0;
for ($x = 0; $x <= $number_of_columns; $x++) {
if (empty($files[(($y + ($x - 1)) + ($number_of_columns * ($y - 1)))])) {
next;
}
$image_size = getimagesize($files[(($y + ($x - 1)) + ($number_of_columns * ($y - 1)))]);
$grid[$x][$y] = $images[(($y + ($x - 1)) + ($number_of_columns * ($y - 1)))];
$width = $image_size[0];
$height = $image_size[1];
$widths[$x][$y][] = $width;
$this_width += $width;
if ($height > $this_height) {
$this_height = $height;
}
if ($x == 0 && $y > 1) {
$total_heights[] = $this_height;
if ($max_width < $this_width) {
$max_width = $this_width;
}
}
}
}
$total_heights[] = $this_height;
if ($max_width < $this_width) {
$max_width = $this_width;
}
$destination_image = imagecreatetruecolor($max_width, array_sum($total_heights));
$black = imagecolorallocate($destination_image, 0, 0, 0);
imagecolortransparent($destination_image, $black);
imagealphablending($destination_image, FALSE);
imagesavealpha($destination_image, TRUE);
// place our images
foreach($grid as $instance_key => $instance) {
$height = $total_heights[$instance_key];
foreach($instance as $reference_key => $reference) {
imagecopyresampled($destination_image, $reference, $instance_key * 180, ($reference_key - 1) * 180, 0, 0, 180, 180, 180, 180);
}
}
// Display the image if directed
if ($action = IMAGE_STITCH_DISPLAY) {
header('content-type: image/png');
imagepng($destination_image);
imagedestroy($destination_image);
exit();
}
// Return the image if directed.
if ($action == IMAGE_STITCH_RETURN) {
return $destination_image;
}
// If we are saving the image, save it with no compression or filters.
if (!$empty($path)) {
imagepng($destination_image, $path, 0, PNG_NO_FILTER);
}
return TRUE;
}
相关问题
- 1. 将多个图像拼接成一个SL/WP7
- 2. 如何拼接多个图像
- 3. 如何优化多个图像拼接?
- 4. 多个摄像头图像拼接
- 5. 用PHP拼接图像GD
- 6. 将图像拼接在一起Opencv -Python
- 7. opencv:将图像拼接在一起
- 8. 图像拼接
- 9. 如何在Android中将多个图像组合成单个图像?
- 10. 使用Javascript将多个图像拼接在一起
- 11. 用OpenCV将小图像拼接成更大的图像
- 12. 如何使用C#中的MagickNet将图像拼接在一起?
- 13. R拼接图像
- 14. OpenCV - 图像拼接
- 15. 图像拼接&OCR
- 16. 将多个图像压缩成单个图像
- 17. 在iOS上拼接图像
- 18. 如何使用ImageMagick将图标连接成单个图像?
- 19. 单个图像中的多个图像
- 20. 用ChunkyPNG将多个图像“条”组合成一个图像
- 21. 如何在另一个图像中显示多个图像。
- 22. 如何在数字微图中将图像的帧合并成一个图像?
- 23. 使用Image Magick我需要将两个图像的一半拼接成一个新图像
- 24. 多图像拼接 - 添加第三图像
- 25. 如何在PHP中的另一个图像内包含图像?
- 26. 将图像分割成多张图像
- 27. 如何合并单个图像中的多个图像
- 28. 无法拼接图像
- 29. 拼接无重叠图像
- 30. 图像建模/拼接
没有任何API来创建照片拼贴? – Jeyaganesh 2011-02-11 18:04:47