Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于带旋转的可拖动曲面生成图像位置_Php_Image_Image Processing_Gd_Image Resizing - Fatal编程技术网

Php 基于带旋转的可拖动曲面生成图像位置

Php 基于带旋转的可拖动曲面生成图像位置,php,image,image-processing,gd,image-resizing,Php,Image,Image Processing,Gd,Image Resizing,使用带有静态尺寸的div框时,我会加载比div更大或更小尺寸的图像,因此我可以旋转、更改大小,并将图像移动到div中 我通过css3实现旋转功能,jqueryui实现移动功能 在与图像交互时,我希望生成具有新位置、角度和大小的图像。因此,我向服务器发送图像的位置、旋转角度和新大小。 在服务器上,我生成一个具有div宽度和高度的图像。 问题是,当我有一个更大的图像,我改变了他的位置,我无法在服务器上生成相同的图像 以下是我生成新图像的算法,该图像的大小和宽度与div框(670/465)相同: $i

使用带有静态尺寸的
div
框时,我会加载比
div
更大或更小尺寸的图像,因此我可以旋转、更改大小,并将图像移动到
div

我通过css3实现旋转功能,jqueryui实现移动功能

在与图像交互时,我希望生成具有新位置、角度和大小的图像。因此,我向服务器发送图像的位置、旋转角度和新大小。 在服务器上,我生成一个具有
div
宽度和高度的图像。 问题是,当我有一个更大的图像,我改变了他的位置,我无法在服务器上生成相同的图像

以下是我生成新图像的算法,该图像的大小和宽度与
div
框(670/465)相同:

$imgFace=WideImage::load($src);
$newImage=$imgFace->resize($width,$height)->rotate($angle);//调整图像大小并旋转到$angle
$rotW=$newImage->getWidth();
$rotH=$newImage->getHeight();
$dx=$rotW-$width;
$dy=$rotH-$height;
if($width<670&&$height<465)//如果图像小于div框
{
$newImage->copyTo($img,$left,$top);//left和top是移动图像后css中的值
}else{//如果较大
$crop_x=$dx/2+$left;
$crop_y=$dy/2+$top;
$newImageCroped=$newImage->crop($crop\u x,$crop\u y,670465);
$newImageCroped->copyTo($img、$leftB、$topB);
} 
简而言之,我在以下场景中遇到了问题:

  • 当图像比
    div
    框高时,我移动它(只有一部分在
    div
    框中)
  • 当图像旋转时,他在
    div
    中只有一部分图像

没有人知道答案这么难吗?:)
$imgFace = WideImage::load($src);
$newImage = $imgFace->resize($width, $height)->rotate($angle); // resize the image and rotate to $angle
$rotW = $newImage->getWidth();
$rotH = $newImage->getHeight();
$dx = $rotW - $width;
$dy = $rotH - $height;   
if($width < 670 && $height < 465) // if the image is smaller than the div box
{
   $newImage->copyTo($img, $left, $top); // left and top are values from css after I move the image
} else { // if is larger
   $crop_x = $dx/2 + $left;
   $crop_y = $dy/2 + $top;
   $newImageCroped = $newImage->crop($crop_x, $crop_y,670,465);
   $newImageCroped->copyTo($img, $leftB, $topB);
}