我正在寻找几乎一小时的c#中使用imagemagick.net的例子,我找不到反对的东西.
所有我需要的是调整图像(.jpg)到新大小的图像(jpg,也),如果你知道如何添加水印将是很好的.
我从下载了imagemagick.net
在我的应用程序中,我需要调整大小并使PNG文件的质量更差.
在完整尺寸下,PNG为3100x4400px,使用2,20MB磁盘空间.
运行以下命令时:
convert -resize 1400 -quality 10 input.png output.png
Run Code Online (Sandbox Code Playgroud)
使用5,33MB磁盘空间将图像大小调整为1400x2000.
所以我的问题是:如何减小文件大小?
我正在寻找一种在命令行上获得两个图像的Bitwise XOR的方法(或者以可以在程序或脚本中实现的另一种方式).
这应该导致与支持它的图片编辑器中使用XOR混合模式相同的最终图片(Paint.NET,Photoshop等)
举个例子,假设我有图像A:

和图像B:

那么结果应该是这样的:

当然,有趣的是,当您再次使用图像B对图像C进行异或时,您将获得图像A的精确副本.
现在,我一直在互联网上查找以编程方式执行此操作的方法,但我一无所获.甚至ImageMagick也不支持对图像进行按位异或.
sombebody知道这样做的方法吗?
我可以这样做批量调整大小并重命名子文件夹中的图像:
convert '*.jpg' -resize 256 small/image_%02d.jpg
Run Code Online (Sandbox Code Playgroud)
它将从...开始创建图像 image_00.jpg
我的问题是,由于外部服务的导入规则,我需要从中开始增量编号 image_01.jpg
IM允许吗?
否则哪种方式最明智?
我ls反过来sort然后重命名添加1
我正在关注这个例子http://cubiq.org/create-fixed-size-thumbnails-with-imagemagick,这正是我想对图像做的事情,除了背景剩余部分(即白色边框) ).有没有办法做到这一点,并可能裁剪白色背景?还有另一种方法吗?重新调整大小需要成比例,因此我不仅要设置宽度重新调整大小限制或高度限制,而是按比例重新调整图像大小.
可能重复:
知道文件是否是Java/Android中的图像
如果文件是图像,我该如何检查?如下:
如果(file.isImage)....
如果标准库无法实现,我怎样才能使用MagickImage lib?
提前致谢!
还有其他关于如何在Windows 7上安装Imagick的帖子,但到目前为止我没有帮助.:(
(也许最新版本出现了问题)
我已按照以下步骤安装:
下载并安装ImageMagick
http://www.imagemagick.org/download/binaries/ImageMagick-6.8.8-1-Q16-x86-dll.exe
下载php_imagick.dll并复制到扩展名dir(c:\ xampp\php\ext)
http://www.peewit.fr/imagick/php55/vc11/x86/ts/php_imagick.dll
编辑php.ini文件并添加新扩展名(c:\ xampp\php\php.ini)
延长= php_imagick.dll
保存ini文件并重启Apache(如有必要,重启Windows)
启动Apache并运行测试
当我启动Apache时,我会看到一个弹出框,显示:
程序无法启动,因为您的计算机缺少php5.dll.尝试重新安装该程序以解决此问题.
然后直接在另一个之后:
PHP启动:无法加载动态库'C:\ xampp\php\ext\php_imagick.dll' - 找不到指定的模块.
根据funtioneer我怀疑某种编译错误.
现在我有PHP版本5.5.6(xampp 1.8.3)与编译器MSVC11,它与php_imagick.dll文件相同.
是从源代码下载ImageMagick并以自己正确的方式编译它吗?(以前从未在Windows中编译过)
我正在尝试将PDF转换为PNG - 这一切都运行正常,但是,即使我相信我已将其禁用,输出图像仍然是透明的:
with Image(filename='sample.pdf', resolution=300) as img:
img.background_color = Color("white")
img.alpha_channel = False
img.save(filename='image.png')
Run Code Online (Sandbox Code Playgroud)
以上产生图像但透明,我也试过以下:
with Image(filename='sample.pdf', resolution=300, background=Color('white')) as img:
img.alpha_channel = False
img.save(filename='image.png')
Run Code Online (Sandbox Code Playgroud)
产生此错误:
Traceback (most recent call last):
File "file_convert.py", line 20, in <module>
with Image(filename='sample.pdf', resolution=300, background=Color('white')) as img:
File "/Users/Frank/.virtualenvs/wand/lib/python2.7/site-packages/wand/image.py", line 1943, in __init__
raise TypeError("blank image parameters can't be used with image "
TypeError: blank image parameters can't be used with image opening parameters
Run Code Online (Sandbox Code Playgroud) 我试图将文件读入缓冲区,调整大小,然后使用以下示例代码将其写入磁盘:
function processImage(data) {
gm(data, 'test.jpg')
.resize('300x300')
.background('white')
.flatten()
.setFormat('jpg')
.toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
fs.writeFile('asd.jpg', buffer);
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是,这会产生错误Error: Stream yields empty buffer.我玩过,使用过imageMagick和graphicsMagick,还是一样的.
如果我代替
toBuffer(...
用
write('asd.jpg', function(err) ...
它实际上写了一个合适的文件.
编辑在写这个问题时,我找到了解决方案,请参阅回复
我正在本地 ubuntu 20.04 机器上运行一个 laravel 项目,该项目在另一台机器上运行良好。该项目使用 Image Magic 将 PDF 转换为 PNG。当我调用将 PDF 转换为 PNG 的功能时,出现以下错误:
ImagickException 尝试执行安全策略“PDF”不允许的操作@ error/constitute.c/IsCoderAuthorized/408
该函数看起来:
public function show($id)
{
$book = Book::all()->first();
$file = public_path('' . $book->pdf);
$count = 0;
$im = new \Imagick($file);
$blobList=[];
do {
$page = new \Imagick();
$page->setResolution(300,300);
$page->readImage($file . '['.$count.']');
$page->setImageFormat("jpeg");
header("Content-Type: image/jpeg");
$image = $page->getImageBlob();
array_push($blobList,$image);
$count++;
} while (5> $count);
// $im->resizeImage(200,200,1,0);
return view('notice/showbook', compact('book', 'blobList'));
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经安装了 image magic 和 gs,并policymap.xml参考这个问题的接受答案进行了更改
然而,错误仍然存在。请帮忙!
谢谢,