【问题标题】:Facebook style Cover photo upload, reposition, crop and save using php and jquery in bootstrap3Facebook 风格的封面照片上传、重新定位、裁剪和保存在 bootstrap 3 中使用 php 和 jquery
【发布时间】:2015-05-31 08:03:47
【问题描述】:

我是网络开发的新手,正在尝试建立我的第一个网站。我使用 PHP、Jquery 和 Bootstrap3 进行开发。我想在我的网站上添加一个类似封面照片上传和重新定位功能的 Faceebook,这有点让人头疼。在herehere 可用教程的帮助下,我已经成功实现了所有功能,但它们都不是完美的。

在这两个教程中,一切正常,直到您保存新重新定位的图像的最后阶段。

  1. 在第一种方法中,保存时,将图像的新位置、容器 div 的高度和宽度作为输入,并使用 imagecreatetruecolor($width, $height); 生成新图像。原始图像会单独保存,如果您想再次重新定位,可以使用。
  2. 在第二种方法中,只需将图像的新位置保存在数据库中,并在页面加载时将(所谓的)重新定位的图像设置为“margin-top”。

问题

  1. 第一种方法实际上是通过单独保存图像来做得很好。但是,这里的问题是,新图像的尺寸是根据容器 div 的尺寸设置的。由于我的容器 div 是响应式,因此高度和宽度因屏幕尺寸而异,图像的实际尺寸也是如此。这是一场灾难,因为如果您在移动屏幕上裁剪图像,宽度设置为 200px,并且在容器宽度接近 600px 的大屏幕上加载相同的图像。它会创建一个空白。
  2. 第二种方法不做任何事情,而是使用 css 定位相同的图像。大尺寸的原始图像每次都不必要地加载。

我已经实施了第一种方法,并进行了很多更改以满足我的需求。 Imagur 上的this .gif 图像更好地说明了这个问题。另请参阅我的其他 Stack Overflow 问题 Scale down images effectively without losing aspect ratio or quality in php 以获得更详细的说明。

一个多月以来,我一直在努力弄清楚如何有效地裁剪新图像并保存它,以便它在所有屏幕尺寸上都保持一致。

我希望专家能给我一个解决方案,这样我就可以立即启动我梦想中的网站。

谢谢

【问题讨论】:

  • 问题在于你的两个容器没有相同的纵横比。您要么需要使它们具有相同的纵横比,要么像 Twitter 那样进行某种缩放以填充。
  • @Math Nerd Productions:你绝对正确,大卫。首先是我不知道如何准确设置纵横比。第二件事是,即使我设置了它,将生成的新图像将具有一致的高宽比,但它的尺寸仍然是一个问题。说在大屏幕上,如果尺寸是 600x300,在小屏幕上它将是 300x150(即 2:1)......不能解决问题。我以日期不同的方式裁剪/生成重新定位的图像,这就是我卡住的地方。
  • 我不善于解释,如果我的观点还没有说清楚,请随时指出不明白的地方

标签: php jquery css twitter-bootstrap-3


【解决方案1】:

如果屏幕尺寸发生变化,您不必生成新图像。您可以简单地使用百分比来保持图像的原始纵横比。

您只需将容器设置为您想要的任何宽度,然后不要设置高度,并设置一个子 img 来填充容器的整个宽度。图片的高度会自动缩放以保持原来的纵横比:

div.aspect
{
    width: 75%;
}

div.aspect img
{
    width: 100%;
}

JSFiddle

【讨论】:

  • 不错的方法,但这只能解决“空白”问题。我应该如何处理重新定位并保存新的重新定位图像!如果有一些教程可以完美地做到这一点,那就太好了......
  • 从您的 Gif 中,看起来您已经保存了部分。你只是按照你一直在做的方式去做;唯一的区别是您通过在两个容器之间使用相同的图像来确保两个容器具有相同的纵横比。还是您没有在保存时裁剪图像?
  • Nerd Production:不,我没有裁剪,我实际上是在生成一个宽度 = 容器宽度、高度 = 容器高度的新图像,从顶部开始的位置是我在拖动它时从 jquery 得到的。也就是说,如果我的 div 是 300px * 150px(小屏幕),则生成此宽度的图像,而如果 div 为 600px * 300px,则生成此宽度的图像。
  • 你好,请问有没有其他网站成功实现过或者哪里可以学这种东西!!
  • 我知道 gravatar 实际上有一个引擎,可以让你通过在 URL 中输入任何大小的图像来请求它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 2019-07-03
相关资源
最近更新 更多