我有一个网站,其中前端存在很多不同的图像。每个~200 x~50kb。现在所有这些图像都是在不同的请求下载的。 (~200个请求)我的目标是创建一个大图像并仅使用一个请求下载它,我也想在我的MySQL数据库中存储关于图像位置的坐标,因为它将在画布前端使用。此外,我想在插入大图像之前重新调整图像大小,因为50kb是大的。在新图像上传到特定目录后,它也将执行自动操作。 所有图像都在一个目录中。我在后端使用laravel PHP框架。
答案 0 :(得分:1)
作为起点,您可以使用此代码扫描目录并将找到的每个图像添加到新图像中。这很粗糙,需要调整,但或多或少都是你想要的。
<?php
$dir=realpath( 'c:/wwwroot/images/tmp/' );/* change to suit your environment */
$col=glob( $dir . '*.*' );/* get all files ( presuming images ) */
$length=count( $col );/* you could use this to generate new image dimensions dynamically */
$sizes=array();
foreach( $col as $file ){
list( $width, $height, $type, $attr ) = getimagesize( $file );
$sizes[ realpath( $file ) ]=array( 'w'=>$width, 'h'=>$height, 't'=>$type );
}
/* create the new image */
$img=imagecreatetruecolor(600,600);
imagecolorallocate( $img, 0,0,0 );
$x = $y = 0;
/* add each image to new image */
foreach( $sizes as $imgpath => $data ){
$x+=$data['w'];
$y+=$data['h'];
$tgt=imagecreatefromjpeg( $imgpath );
imagecopymerge( $img, $tgt, $x, $y, 0, 0, $data['w'], $data['h'], 100 );
imagedestroy( $tgt );
}
header('Content-Type: image/jpeg');
imagejpeg( $img );
imagedestroy($img);
?>