我在网站上上传图片并将图片更改为适合 100 x 100 白色方 block 的缩略图。问题是图像看起来没有正确消除锯齿。在 photoshop 中缩小尺寸的图像看起来很平滑,但这些看起来松脆,就像 super 锐化一样。
看看these samples ,左侧显示完整尺寸,右侧显示缩略图(以 100% 比例查看)。这张照片看起来锐利得可笑,但很多人可能不会被它打扰。虽然这幅画是 Not Acceptable 。那些曲线根本就没有抗锯齿,变成了虚线。
我使用的是 imagejpg(),我选择的 jpg 质量对脆度没有影响。下面是一些围绕它的代码:
$tmp_img = imagecreatetruecolor( $maxSize, $maxSize );
$white = ImageColorAllocate ($tmp_img, 255, 255, 255);
ImageFill($tmp_img, 0, 0, $white);
imagecopyresized( $tmp_img, $img, $offsetx, $offsety, 0, 0, $new_width, $new_height, $width, $height );
$thumbFullPath = "{$pathToThumbs}/{$filenameNoExtension}.jpg";
imagejpeg( $tmp_img, $thumbFullPath, 90 );
有什么想法吗?这是正常的吗?谢谢!
最佳答案
您可能想尝试 imagecopyresampled而不是 imagecopyresized。它速度较慢,但使用更复杂的算法来确定新图像中每个像素的颜色。
关于php imagejpeg 质量很差 : why?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3076716/
让我们计算MRI范围内的类别:defcount_classesObjectSpace.count_objects[:T_CLASS]endk=count_classes用类方法定义类:classAdefself.foonilendend然后运行:putscount_classes-k#=>3请解释一下,为什么是三个? 最佳答案 查看MRI代码,每次你创建一个Class时,在Ruby中它是Class类型的对象,ruby会自动为这个新类创建“元类”类,这是另一个单例类型的Class对象。C函数调用(class.c)是:rb_define
我遇到了一些Ruby代码,我试图理解为什么变量在initialize方法声明中的名称末尾有冒号。冒号有什么原因吗?attr_reader:var1,:var2definitialize(var1:,var2:)@var1=var1@var2=var2end 最佳答案 那些是关键字参数。您可以按名称而非位置使用它们。例如ThatClass.new(var1:42,var2:"foo")或ThatClass.new(var2:"foo",var1:42)Anarticleaboutkeywordargumentsbythoughtbot
关于Ruby如何处理内联错误处理程序,我想了解一些事情案例一这是一个常见的用例deffooraiseErrorendbar=foorescue1#=>1bar#=>1它按预期工作。表达式foorescue1返回1并正确分配给bar。案例二Ruby允许解构数组,所以这种行为看起来很奇怪。baz='a'baz,bar=foorescue[1,2]#=>[1,2]baz#=>'a'bar#=>nil表达式返回数组[1,2]但不解构或分配它。它完全跳过了分配。案例三但是,当您将错误括在括号中时,解构就起作用了。baz,bar=(foorescue[1,2])#=>[1,2]baz#=>1bar
TLDR:App.count需要重新加载才能看到创建的记录。为什么?我找到了很多关于测试DELETE方法的引用资料,如下所示:expect{delete_request}.tochange(App,:count).by(-1)这是有道理的,并且适用于一些类似的场景。但是,我在测试不应该执行的删除时遇到了一个问题,例如当没有用户登录时。我从这里开始,用两种方法来测试同一件事:require'rails_helper'RSpec.describeV1::AppsController,type::controllerdolet(:user){create(:user)}let(:app){c
我正在尝试从我的文章模型中获取所有ID。我可以通过两种方式做到这一点:Article.select(:id).collect{|a|a.id}ArticleLoad(2.6ms)SELECT"articles"."id"FROM"articles"或2.2.1:006>Article.pluck(:id)(4.3ms)SELECT"articles"."id"FROM"articles"什么给了?为什么AR比Ruby版本慢?即使我对Ruby方法进行基准测试,它似乎也更快:Benchmark.measure{Article.select(:id).collect{|a|a.id}}Art
我正在尝试使用RubygemRestClient为我的一个FusionTables更新样式。这是我的代码:require'rest_client'tableId=''styleId=''key=''table_url="https://www.googleapis.com/fusiontables/v1/tables/#{tableId}/styles/#{styleId}?key=#{key}"update='{"polygonOptions":{"strokeColor":"#ffffff"}}'token='STRINGCONTAININGAUTHORIZATIONTOKEN'R
我正在运行RubyonRails3,我想使用Paperclip插件/gem降低上传图像的质量。我该怎么做?此时在我的模型文件中我有:has_attached_file:avatar,:styles=>{:thumb=>["50x50#",:jpg],:medium=>["250x250#",:jpg],:original=>["600x600#",:jpg]}这会将图像转换为.jpg格式并设置尺寸。 最佳答案 尝试使用convert_options。has_attached_file:avatar,:styles=>{:thumb=
我正在尝试了解_why的cloaker他在“ABlockCostume”中写到的方法:classHTMLdefcloaker&blk(class我意识到class打开self的特征类,但我以前从未见过有人在实例方法中这样做。什么是self在我们这样做的时候?我的印象是self应该是调用该方法的接收者,但是cloaker从内部调用method_missing:defmethod_missingtag,text=nil,&blk#...ifblkcloaker(&blk).bind(self).callend#...end那么self是什么?在method_missing里面称呼?什么是s
我正在尝试解密一组用于数据库迁移的密码。我有一些旧的Rails代码(实际上是一个Runner脚本)可以很好地解密它们。但是将相同的代码放入Rake任务会导致任务失败,并显示...未定义的方法`to_a'for"secretkey":String...为什么在字符串上调用to_a在Rake任务中无效,但在Runner脚本中却完全有效?require'openssl'KEY='secretkey'namespace:importdotask:users=>:environmentdodefdecrypt_password(pw)cipher=OpenSSL::Cipher::Cipher.
我在我的Rails4应用程序中使用resque和resque_scheduler。我的应用程序正在为resque提供一些工作,但工作人员没有在处理这些工作。reque-web显示没有失败。我已经通过运行开始resqueworkerQUEUE=kqueuerakeenvironmentresque:work我的rails控制台2.0.0p353:006>Resque.info=>{:pending=>0,:processed=>0,:queues=>0,:workers=>1,:working=>0,:failed=>0,:servers=>["redis://localhost:637