我想知道是否有任何方法可以使用客户端编码(而不是服务器端)在浏览器中显示多页 tif 图像,以便用户可以像常见的 jquery 照片库一样在页面之间导航。我从https://github.com/seikichi/tiff.js找到了 Tiff.js ,但是这个库只提供了多页 tiff 的下载链接,并且不以 html 形式显示它。
我可以在服务器端使用 ImageMagic、LibTiff.Net 等库来完成此操作,但我不想这样做,因为照片数量巨大,如果我这样做,会消耗大量服务器的 cpu
你知道有什么替代解决方案吗?
如何使用https://github.com/rsms/node-imagemagick在图像周围添加更多空白?例如原始图像是width:300, height:100,我想生成新图像是width: 600, height: 200原始图像位于中心保持原始大小,在周围添加空白以成为新图像。
我尝试了下面的代码,但这使原始图像变成 600*200 ...如何解决它?
function cropGravity(srcFilePath, dstFilePath, resizeWidth, resizeHeight, quality, gravity) {
return new Promise(function (resolve, reject){
im.crop({
srcPath: srcFilePath,
dstPath: dstFilePath,
width: resizeWidth,
height: resizeHeight,
quality: quality,
gravity: gravity
}, function(error, stdout, stderr){
if (error != null) {
console.log(error)
reject(error);
} else {
resolve(dstFilePath);
}
});
});
};
...
var resizeWidth = 600;
var resizeHeight = 200;
var quality = 1;
var gravity = 'Center';
cropGravity(srcFilePath, dstFilePath, resizeWidth, resizeHeight, …Run Code Online (Sandbox Code Playgroud) 我正在编写一个用透明颜色删除背景颜色的脚本。
脚本是这样的,给出的结果还可以,可以区分紫红色。
$val = 65535/40;
//divide by fuzz dilution, 1 is none
$val = floatval($val/0.9);
//create white border
$image->borderImage ( "rgb(255,255,255)" , 1 , 1 );
//make all white fill fuchsia
$image->floodFillPaintImage ( "rgb(255, 0, 255)" ,$val*3, "rgb(255,255,255)", 0 , 0, false);
//make fuchsia transparent
$image->paintTransparentImage("rgb(255,0,255)", 0.0, 0.5);
//remove border 1px that was added above
$image->shaveImage ( 1 , 1 );
Run Code Online (Sandbox Code Playgroud)
然而,它会在图像周围留下颜色的痕迹。这是我尝试删除白色背景手机周围边框的示例 - 您可以清楚地看到边缘上的白色痕迹。
问题是 - 当对像素 0,0 进行洪水填充时,背景颜色颜色错误,我需要一个“模糊”桶填充函数。Imagemagic为floodFillPaintImage提供了“模糊”算法,但“模糊”部分的参数仅起到像素选择的作用,并不能起到模糊着色的作用。
例如,我有一个 100% 白色 - 算法正确地选择了完美的白色背景,并用新的、完美的紫红色图像填充它。当您设置“模糊”参数时,算法会正确选择80% 白色像素(例如),但会再次使用 100% …
我需要获取一个旋转器 gif 并向其中添加文本,但文本需要位于旋转器动画下方、当前图像边框下方。
是否有命令可以使用 Imagemagick 在图像周围添加透明空间?或者,是否有免费的在线工具可以达到相同的结果?
我尝试了以下方法,但它创建了一个非常紧张且无法使用的图像:
convert spinner.gif -background none -gravity north -extent 400x200 new_spinner.gif
Run Code Online (Sandbox Code Playgroud) 我正在使用 imagemagick 在图像上放置一些文本,但我正在努力寻找一种方法来动态地将文本爆炸放在框的中间。
对于奖励积分,是否还有一种方法可以使用第二个命令将其偏移,即将其从中心向右微移 50px。这是因为通常我希望文本位于中间,除非他们添加图片,那么我也需要为图片腾出空间。
文本和字体大小将是可变的,但仍然需要居中。
这是我当前的代码:
<?php
function process($inputdata)
{
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );
/* New image */
$image->newImage(400, 300, $pixel);
/* Black text */
$draw->setFillColor('black');
/* Font properties */
$draw->setFont('Bookman-DemiItalic');
$draw->setFontSize( 30 );
/* Create text */
$image->annotateImage($draw, 10, 45, 0, $inputdata);
/* Give image a format */
$image->setImageFormat('png');
/* Output the image with headers */
header('Content-type: image/png');
echo $image;
return;
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加这个命令,但似乎没有任何效果: …
如果有人问这个问题,我深表歉意,但我正在努力寻找答案。
我正在将 Node GM 包与 ImageMagick 一起使用。因为我的印象是label那里唯一的作品。
我想拍摄一张图像并label在其顶部添加一个。
我最初是用来drawText()实现这一点的,但是我需要利用labelIM 中的自动调整大小。我所拥有的是:
im(path.join(__dirname, '../public/images/imgen/backgrounds/', color + '_' + type + '.png'))
.gravity('West')
.fill('#FFFFFF')
.font(path.join(__dirname, '../public/fonts/Lato/Lato-Bold.ttf'))
.out('label: ' + text)
.write(
path.join(__dirname, '../public/images/imgen/generated/', fileName), function(err) {
if (!err) {
// If the write was successful then redirect to the new image
res.redirect('/images/imgen/generated/' + fileName);
} else {
console.error(err);
res.status(500).end();
}
});
Run Code Online (Sandbox Code Playgroud)
上面生成了两张图像而不是一张。我猜我需要创建一个空图像并将该图像插入作为背景。但我不知道如何做到这一点。
im(1080, 1080)
.gravity('West')
.fill('#FFFFFF')
.font(path.join(__dirname, '../public/fonts/Lato/Lato-Bold.ttf'))
// Add the image as a background …Run Code Online (Sandbox Code Playgroud) 我想将图像格式转换为特定质量的 JPG
由于某种原因以下命令不起作用,我得到的只是 NULL
gm convert -quality 80 '/tmp/phpK31vNK' JPEG:'/tmp/phpK31vNK' && cat '/tmp/phpK31vNK'
然而,以下命令工作正常,但graphicsmagick 设置默认质量为 75
gm convert '/tmp/phpK31vNK' JPEG:'/tmp/phpK31vNK' && cat '/tmp/phpK31vNK'
为了将多个图像平均在一起,通配符效果很好:
magick convert -average *.png out.png
Run Code Online (Sandbox Code Playgroud)
但是,如何在 Windows 命令行上指定多个输入图像而不使用通配符呢?(最终目标是制作一个批处理文件,以便我可以选择多个图像,然后使用 SendTo 菜单将它们组合起来,为此%*将收到"C:\...filename.png" "C:\...file2.png" "C:\...something.png"。)
在ImageMagick 文档中,它说如果您在montage没有任何花哨选项的情况下使用,它应该只是排列您的图像,没有任何装饰并有一些间距。
那不会发生在我身上。这是我的两个输入图像:
\n\n\n\n这是两个独立的 PNG,尺寸均为 100x100,具有红色背景。现在,如果我运行,它会生成一个如下所示的montage 1.png 2.png out.png图像文件:out.png
您可能会注意到,那里有标签。我已经尝试了所有方法,但无法删除这些标签。例如,添加-label ""到命令中会产生以下结果:
由于白色背景,这并不明显,但标签的空间仍然是图像的一部分,那里什么也没有。
\n\n最终结果是我想紧密地打包这些图像(因此这两个图像将生成 200x100 png),并且我希望命令是这样的:montage -geometry 100x100+0+0 -label "" -background blue 1.png 2.png out3.png这里我将背景设为蓝色以突出显示“标签”区域,在最终版本中它应该是不必要的。这就是该命令产生的结果:
图像大小为 200x118,表示为标签添加了 18 个像素。删除命令的标签参数除了使标签成为数字之外没有任何作用。我想我有点失去理智了,我已经尝试了这个命令的几十种变体,但没有什么可以摆脱“标签空间”。鉴于它们默认显示,并且文档表明它不应该显示,我开始怀疑它是 ImageMagick 中的错误,但再次:失去了理智。我想我可能只是错过了一些明显的东西。
\n\n我在 macOS 上通过 Homebrew 安装了 ImageMagick,尽管我尝试直接从他们的网站使用该版本,但它不起作用。报道是这样的montage -version:
Version: ImageMagick 7.0.5-7 Q16 x86_64 2017-05-20 http://www.imagemagick.org\nCopyright: \xc2\xa9 1999-2017 ImageMagick Studio LLC\nLicense: http://www.imagemagick.org/script/license.php\nFeatures: Cipher DPC HDRI Modules\nDelegates …Run Code Online (Sandbox Code Playgroud) 你好社区。我正在尝试解决与上面帖子中提到的相同的问题。我想在将图像发送到 OCR 之前对其进行预处理,以便获得不错的输出。出于这个原因,我想增加图像的 DPI,建议的解决方案是使用 Imagemagik。有人可以帮助我如何使用 Imagemagick 重新采样图像吗?它有很多重采样过滤器,我不确定如何进一步进行。这是 ImageMagick 重采样页面Resampling的链接。
我是信号处理和计算机视觉的新手。我希望一些大师可以建议我做什么以及如何做。
imagemagick ×10
image ×2
node.js ×2
php ×2
algorithm ×1
animated-gif ×1
background ×1
colors ×1
command-line ×1
javascript ×1
jquery ×1
tesseract ×1
tiff ×1
windows ×1