我正在使用 Imagemagick 来调整和裁剪图像。
测试图片:
我需要将它的大小调整为 300 x 320 帧,首先我正在调整图像的大小然后裁剪它,我正在使用以下命令:
exec("convert /uploadImagePath -thumbnail 300 /newImagePath");
exec("convert /newImagePath -gravity Center -crop 290x310+0+0 /newImagePath");
但它给了我下面的图像
如您所见,图像并不完整。我哪里错了?
最佳答案
(答案已更新,现在在下面进一步提供了 -liquid-rescale 的示例)
您的原始图片尺寸为:
489 x 640 pixels
您想要的尺寸似乎是:
290 x 310 pixels
如果没有以下任何一个,这将无法扩展到这些维度:
您的结果显示“1”。 (裁剪),你不喜欢。所以你有选项“2”。 (保持宽度),“3”。 (保持高度),“4”。 (失真),“5”。 (填充)和“6”。 (接缝雕刻)留待测试。
convert WPTgp.jpg -resize x310 keep-height.jpg
结果图像的尺寸为 237 x 310 像素。
保持高度....
(自动确定宽度)
convert WPTgp.jpg -resize 290x keep-width.jpg
结果图像的尺寸为 290 x 380 像素。
保持宽度.....
(自动确定高度)
convert WPTgp.jpg -resize 290x310\! distorted.jpg
结果图像的尺寸为 290 x 310 像素。
扭曲……
(忽略宽高比——如果需要以适应尺寸则扭曲图像)
convert WPTgp.jpg \
-resize 290x310 \
-gravity center \
-background orange \
-extent 290x310 \
padded.jpg
结果图像的尺寸为 290 x 310 像素。 (添加橙色背景只是为了证明图像的“扩展”确实有效。)
填充.........
(保持宽高比——扩展图像以获得所需的尺寸)
<罢工>罢工>
<罢工>convert WPTgp.jpg -liquid-rescale 290x310\! liquid.jpg
罢工><罢工>罢工> 以上是您通过快速阅读 ImageMagick 命令选项引用自发得出的命令。但是,它效果不佳,我改为使用:
convert WPTgp.jpg -liquid-rescale 599x640\! -scale 290x310 liquid.jpg
convert WPTgp.jpg -liquid-rescale 599x640\! -scale 48.4% liquid.jpg
下面进一步解释了为什么我需要修改它....
液体缩放
抱歉——我现在无法提供示例图片;这需要安装额外的 ImageMagick 委托(delegate) 我现在有机会创建一个“液体缩放” ' 原始图像的版本。liblqr(液体缩放库),我目前没有)
'-liquid-rescale' 的注意事项:如上所述,最后一张图片不是我最初建议的命令的结果,而是这两个修改版本之一的结果:
convert WPTgp.jpg -liquid-rescale 599x640\! -scale 290x310 liquid.jpg
convert WPTgp.jpg -liquid-rescale 599x640\! -scale 48.4% liquid.jpg
请记住,我们有一张 489x610 像素的原始图像,我们希望将其缩放到 290x310 像素。但是 -liquid-rescale 不擅长同时在两个维度上重新缩放——它被设计为仅在一个方向上缩放(水平或垂直)。如果您尝试同时执行这两项操作,结果可能会出乎您的意料。这是最初提议的命令的结果:
convert WPTgp.jpg -liquid-rescale 290x310\! liquid.jpg
LQR 出错
这就是为什么我想出了两个修改后的命令,它们分两步工作:
关于php - Imagemagick Crop 命令没有给出完美的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720817/
我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
大家好!我想知道Ruby中未使用语法ClassName.method_name调用的方法是如何工作的。我头脑中的一些是puts、print、gets、chomp。可以在不使用点运算符的情况下调用这些方法。为什么是这样?他们来自哪里?我怎样才能看到这些方法的完整列表? 最佳答案 Kernel中的所有方法都可用于Object类的所有对象或从Object派生的任何类。您可以使用Kernel.instance_methods列出它们。 关于没有类的Ruby方法?,我们在StackOverflow
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r
如何在Ruby中获取BasicObject实例的类名?例如,假设我有这个:classMyObjectSystem我怎样才能使这段代码成功?编辑:我发现Object的实例方法class被定义为returnrb_class_real(CLASS_OF(obj));。有什么方法可以从Ruby中使用它? 最佳答案 我花了一些时间研究irb并想出了这个:classBasicObjectdefclassklass=class这将为任何从BasicObject继承的对象提供一个#class您可以调用的方法。编辑评论中要求的进一步解释:假设你有对象
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions