小编Fer*_*Fer的帖子

如何在调整图像大小时阻止GD2清除颜色?

我使用CodeIgniter 1.7开发了一个照片共享社区网站.成员上传的照片会自动调整为多种格式,我使用CodeIgniter Image Manipulation类.该类内置于框架中,基本上是多个图像处理库的包装器,如GD,GD2,ImageMagick和NETPBM.在我的主机上,我只能使用GD2,所以这就是这个问题的所在.

关于我的问题.以下是我网站上已调整大小的照片示例.请注意,原件非常大,宽度超过3000像素:

http://www.jungledragon.com/image/195/female_impala_close-up.html

现在,看看同样的图像,也调整大小,在Flickr上稍大一些:

http://www.flickr.com/photos/fledder/3763538865/in/set-72157621744113979

看到戏剧性的差异?我正试图弥合这个巨大的差距.我做的第一件事是对图像应用锐化滤镜.你可以在这里看到结果:

在此输入图像描述

虽然仍然不完美,但它至少接近Flickr图像的清晰度水平.剩下的问题是颜色被冲走,好像它们的饱和度降低了.这种情况发生在锐化滤镜之前,因此它必须在GD2中.

这个问题对我来说至关重要,但我不知道在哪里看.我发现一些.NET线程正在谈论色度子采样,但我不知道在我的设置中如何处理这些信息.我正在寻找在我的设置约束下工作的任何解决方案.

更新:这里是原始文件,就像我将它上传到我的网站和Flickr一样:

http://www.jungledragon.com/img/DSC07275.jpg

更新2:我很震惊.好的方式.安装ImageMagick但是在切换到它之后花了很多痛苦(这是将'imagemagick'设置为Code Igniter图像处理类使用的库的问题,测试图像的结果如下:

在此输入图像描述

ImageMagick的调整大小正是按预期完成的.颜色被保留,清晰度就在那里.是的,我禁用了自定义锐化程序,因为ImageMagick不再需要它.最重要的是,这个过程更快,内存也更少.这里有另一个很大的部分:我无法解释它,但我绝对没有告诉ImageMagick使用特定的颜色配置文件,这是由用户@Alix建议的.到目前为止,在我的测试中,无论是否有嵌入的配置文件,都可以看到颜色信息.输出只是输入的较小版本.ImageMagick真的那么聪明还是我在做梦?

php codeigniter gd2 image-resizing

34
推荐指数
3
解决办法
1万
查看次数

如何撰写反向Google图片搜索的网址?

我正在管理照片共享网站,作为管理员,我想要一个按钮来检查上传照片的来源(为了侵犯版权).

我的想法是简单地启动Google反向图片搜索服务的网址,将我的图片网址作为网址中的参数传递.我不需要自动后端集成,我只需单击该按钮查看可疑图像,并手动和直观地检查结果.

由于不推荐使用Google Image Search API,我正在尝试弄清楚这些反向网址是如何编码的.这是一个例子:

https://www.google.com/search?tbs=sbi:AMhZZiu4Yrek2BpiwyGk9IsHVNZf-iYz5hbuYqkEQltbV2v9Gw5Jh5d9Od1vKAHMAHIwCy3Z5bb5XgsTSfSRp--8NvG9BGxSNEFkd5tjHKH3EQHUTkOL_1MaFPK9DYRbNERlhG0bem6Lic1U8KN0TbtjfaKqVpKOnOgveoygHHN6xCiABQktN5AdZOs8F5BrXtIEZZf-CpVj_1Fd09ffaN9JE7hdEZPeM804rQgLP9UZe7QPIDG4Pn50Pcl5v1QgFUG6HO4U2Yhc54whAvC8SpyD1-hdCyDCa0rUn1E4KZrQFbIB6kodhQbOZXQxYdaQsY74g54jxsgtZeKt9rbhDzCMRrNkSsJwMlfv6NF5H4QPR8coHogn9nKkLUi3PgcJ-1rehd0EDssook5IPRVq5hH84j6vDbq0kbUtYxUkJwXm3_1C6jn-4hiR-W8c19HM63tcIIohTfmrca-kyN4rhHlkEjlL1684AICeyml8jx1rbBxCtiQcedyDKWiFxCbNpTUZ2z-Psx7EAQJ9AKu1BeRdi-7d5GbVpNwq_1h_13jBynarvhfqyPje7ZolbIwVoQt66ctO9I8OtVj1LAfjMG8AE3Id1v2e0FVfMZCN_1r_178KbudnT61GQYGiy9AkKAJ509Uy7flMlvPAVzkV2QTHqrL46Vh9rcy2kExYXzt_1pcq4AApKzCtRhaSazHx8V0gQrmopqRA9kmpto2yFOgTR0E8EAPNU-egb4dQC4FIZSBGTOKb2eIdjqEybZlhjcuoGIriKYrgWIWyBhfFJ2MIOTYMGRpvNytugXhkR9Cd9g2Xv37bVf3NedpfXbqOJKFlHi4KmhGK7PrCRcbCo18WxTQuzrr6xJvrdr0i3tPWYVOcXjJB5K3mBZFcDP90nsYLOU1TE1nVYFVmMVCK2kdxeUZmIYb_1S3XGZyz_1AkZkgk0jzM6f5dGHz4rVOEmB PSS-mjLDf67-4w9Ro7JZGg2HDDGewrWzaJhbQfGxuBE8MgAts5aPTDuqtUADYfxkubQmDxmbih26-ypk9EIbo6FNLie_1lzenC442iBZadZOwcBJI6h7o8zBgQPaJkKsr_1lILo7aCX9zbGWydzkpvJXZEXUm9oci02uz3sCIJ9djDl2h3qttETJEwgoApkY5uC6s4Sgydwu0_1b4_1F6-61604_1n558xMvcmj9BeiFqxw&NUM = 10&HL = EN&波黑= 1029&BIW = 1920

我认为SBI参数是URL的编码版本.有谁知道这是什么样的编码?

google-image-search

20
推荐指数
2
解决办法
9981
查看次数

如何在不丢失图像质量的情况下从JPG中删除exif?

我有一个PHP照片共享应用程序,其中用户上传的图像使用ImageMagick调整为各种拇指格式.

作为一种节省文件大小的看似"智能"的方式,我正在从这些拇指中删除exif信息,如下所示:

$imagick = new Imagick($image);
$imagick->stripImage();
$imagick->writeImage($image);
Run Code Online (Sandbox Code Playgroud)

这有效.它确实删除了EXIF信息,其中30KB的大拇指节省12KB并变为18KB.在单个页面上显示许多此类拇指时显着节省.

但问题是它的效果有点太好了.与非剥离版本相比,生成的图像似乎丢失了大量的颜色信息并且看起来"平坦".

根据我迄今为止的研究,我的理论是以下一个或两个都是正确的:

  • Imagick将基本颜色配置文件信息作为剥离过程的一部分丢弃
  • Imagick在保存图像时重新压缩图像,失去了质量

无论问题的原因是什么,我都在寻找一种方法来删除EXIF信息,使其不会影响图像质量或颜色本身.

这甚至可能吗?

更新:

根据Gerald Schneider的回答,我尝试在"剥离"图像之前将质量设置强制为100%:

$imagick = new Imagick($image);
$imagick->setCompression(imagick::COMPRESSION_JPEG);
$imagick->setCompressionQuality(100);
$imagick->stripImage();
$imagick->writeImage($image);
Run Code Online (Sandbox Code Playgroud)

不幸的是,问题仍然存在.下面是示例输出,尽管将质量设置为100%,但图像仍然是平坦的.

在此输入图像描述

php thumbnails imagick

19
推荐指数
1
解决办法
1万
查看次数

CSS flexbox模块是否仅适用于直接子元素?

看看我拥有并运行的网站的这个页面设计:

http://www.jungledragon.com/image/9472/barn_owl_close-up.html

如您所见,这涉及经典的双列布局.事情的顺序很重要.例如,您可以直接在照片旁边看到这个问题.

我现在正在编写针对该网站的响应式设计,并面临挑战.想象一下在狭窄的智能手机视口上的页面.经典的策略是简单地"堆叠"左侧下方的右列,让用户垂直滚动.然而,就元素的排序而言,这远非理想."specie"区块将位于照片下方,用户首先必须滚动评论之类的内容才能看到照片与硬币之间的关系.

我正试图解决这个问题,而这篇解释CSS的flexbox作为可能的解决方案的文章听起来非常有希望:

http://www.jordanm.co.uk/post/21863299677/building-with-content-choreography

这里的想法是只使用CSS,可以改变元素的视觉顺序,正是我需要的.不幸的是,从那时起,我了解到该文章使用了过时的规范,并且新规范几乎不受任何浏览器的支持:

http://css-tricks.com/old-flexbox-and-new-flexbox/

这种废墟对我而言.不过,我还是想在概念层面提出我的问题:

我见过的关于flexbox的所有演示都有这样简单的标记:

<div id="somecontainer">
  <div id="child1"></div>
  <div id="child2"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

接下来,容器被声明为flexbox,方向垂直.最后,为每个子元素分配一个订单.这允许例如使用单个CSS语句将child2移动到child1之上.

现在问题就在这里.如果实际标记在某些意义上更复杂,那么还有其他层次结构在起作用?一个例子:

<div id="somecontainer">

  <div id="colmain">

    <div id="content1"></div>
    <div id="content2"></div>
    <div id="content3"></div>

  </div>

  <div id="colside">

    <div id="content4"></div>
    <div id="content5"></div>
    <div id="content6"></div>

  </div>

</div>
Run Code Online (Sandbox Code Playgroud)

如您所见,此标记具有其他层次结构,要重新排序的实际内容块不是最高级别容器的直接子元素.他们是孩子,但不是直接的孩子.

flexbox和子元素的重新排序是否适用于这种情况?例如,"content5"可以在"content1"和"content2"之间移动吗?

无论浏览器支持不佳,我都试图在概念上理解是否支持它.我问的原因是因为额外的列层次结构在标记中非常常见,如果flexbox重新排序仅适用于直接子节点,那将完全糟糕.

css css3 flexbox

18
推荐指数
2
解决办法
7670
查看次数

如何控制Nivoslider如何预加载图像?

我正在使用优秀的Nivoslider插件在我的主页上展示一组照片,目前是5.所有工作都很好,但每张照片都增加了大约150K的页面重量.我实际上想要展示大约10个"幻灯片",但由于所有这些图像都是在页面开头预先加载的,因此页面权重很快会变得太大,特别是因为许多用户可能不会等待"显示"完成.

我想知道是否有可能预先载入图像,或者尤为明显,只有X领先的图像.我在文档中找不到任何关于它的内容,所以我认为它不是本机支持的.有任何想法吗?

jquery photo-gallery nivo-slider

16
推荐指数
1
解决办法
1万
查看次数

如何创建友好的日期格式(例如"提交2天前")

可能重复:
如何计算相对时间?

我想在我的社交网络应用上格式化日期,就像Digg.com和其他网站一样.在那里,你会看到非常友好的约会,例如:

  • 现在
  • 3分钟前
  • 一个小时之前
  • 2个星期前
  • 6个月前
  • 等等

在我开始创建这样的东西之前,有没有人知道任何现成的脚本,我只需插入一个日期戳,并根据它与当前时间的关系给出一个友好的日期文本?

PS:我需要在PHP中使用它,但伪代码或任何其他语言也可以.

php formatting date

15
推荐指数
1
解决办法
9767
查看次数

"我的帐户"或"您的帐户"标签

我有一个奇怪的问题并不是技术问题,但我希望收集有意义的建议.

我正在构建一个大型Web应用程序,基本上是一个照片共享社区站点.作为此站点的一部分,登录用户可以访问他们的个人资料,从中可以看到他们自己的东西(图像,评论,投票)以及编辑他们的详细信息和偏好.用户还可以查看其他用户的个人资料(他们的图像,评论,投票),但当然不会编辑他们的详细信息.

我的问题很简单但它一直困扰着我:用什么称呼用户的个人链接和内容?他们应该被命名为"你的":

您的图片
您的资料
......

......或"我的":

我的图片
我的个人资料

...或者也许是名字,即使您已登录:

Fledder的
头像Fledder的头像

尽管听起来不重要,但我真的在这方面寻求建议.我对任何标准特别感兴趣,为什么选择首选,以及在哪种情况下首选.

user-interface user-experience uilabel ui-design

14
推荐指数
3
解决办法
1306
查看次数

HTML5自动对焦=自动选择?

我正在使用一些HTML5表单功能来逐步增强我的Web项目的用户体验.其中一个特别是自动对焦,我想在一个允许用户输入标签的模态(灯箱)对话框中使用它.现有标签可能存在.

我安装的唯一支持自动对焦的浏览器是Chrome 9,但是当我测试它时,它确实将焦点放在字段上,但也会自动选择字段中的所有现有文本.我没想到或想要自动选择,我想要自动对焦.

我的期望是错误还是Chrome错了?

html5 google-chrome autofocus

14
推荐指数
2
解决办法
1万
查看次数

是否可以收听AddThis帖子分享活动?

我正在使用AddThis小部件来启用向Twitter,Facebook和Google+分享网站内容.我已在我的网站上签名用户,并且正在考虑在签名用户和他的共享行为之间建立关联.

为此,我需要收听Addthis小部件的回调,这是他们网站上的直接示例:

function shareEventHandler(evt) { 
    if (evt.type == 'addthis.menu.share') { 
        alert(typeof(evt.data)); // evt.data is an object hash containing all event data
        alert(evt.data.service); // evt.data.service is specific to the "addthis.menu.share" event
    }
}

// Listen for the share event
addthis.addEventListener('addthis.menu.share', shareEventHandler);
Run Code Online (Sandbox Code Playgroud)

此事件的问题在于它在实际共享内容之前被触发.例如,用户单击"Tweet"按钮,触发此脚本,启动Tweet对话框,用户向前移动或取消该对话框中的共享.

理想情况下,事件处理程序在实际共享成功完成后触发,而不是在用户取消时触发.这似乎不可能从官方文档中,但我想尝试,如果有人有创造性的解决方法?

javascript addthis

12
推荐指数
1
解决办法
1926
查看次数

华丽的网页按钮具有正确的行为,可以做到吗?

对于我的应用程序,我想很好地设置提交按钮的样式.使用普通的CSS,我设法让它在Firefox中看起来很好,在IE中也很糟糕.然后我看到了这篇博文:

http://www.sohtanaka.com/web-design/liquid-color-adjustable-css-buttons/

使用这种技术,您可以在几乎所有浏览器中获得华丽的按钮.但是,还有一些可访问性问题:

  • 由于它使用链接而不是真正的HTML输入或按钮元素,因此单击按钮不会提交表单.这可以使用Javascript轻松解决,但如果提交按钮在没有启用Javascript的情况下工作,那将是理想的选择.
  • 另一个问题是,按[ENTER]不会提交表单.脏黑客是包含"提交"或"图像"类型的不可见输入元素.

基本上我想要的也许是不可能的:博客条目中的样式质量,但使用普通元素实现,以便我得到正常的行为.

我真的必须在肮脏的黑客或糟糕的造型之间做出选择吗?

到目前为止我看到的每个按钮样式教程在IE中都有次优化结果:(

css internet-explorer button

10
推荐指数
1
解决办法
1141
查看次数