- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始使用 PHP 的 Imageick 库。
我首先裁剪用户图像,如下所示:
$img_path = 'image.jpg';
$img = new Imagick($img_path);
$img_d = $img->getImageGeometry();
$img_w = $img_d['width'];
$img_h = $img_d['height'];
$crop_w = 225;
$crop_h = 430;
$crop_x = ($img_w - $crop_w) / 2;
$crop_y = ($img_h - $crop_h) / 2;
$img->cropImage($img_w, $img_h, $crop_x, $crop_y);
我现在需要将 225 x 430 的裁剪图像放置到中心 500 像素 x 500 像素的新图像上。新图像必须具有透明背景。像这样(灰色边框仅是视觉效果):
我该怎么做?我尝试了两种选择:
compositeImage()
$trans = '500x500_empty_transparent.png';
$holder = new Imagick($trans);
$holder->compositeImage($img, imagick::COMPOSITE_DEFAULT, 0, 0);
通过制作一个 500x500px 的透明 png,上面没有任何内容,我希望我可以使用 compositeImage
将图像放在上面。它执行此操作,但不保留 $holder
的原始大小,而是使用 225x430 大小
frameImage()
$frame_w = (500 - $w) / 2;
$frame_h = (500 - $h) / 2;
$img->frameimage('', $frame_w, $frame_h, 0, 0);
我创建了一个边框,将图像的剩余像素组成为 500 x500 像素。我希望通过将第一个 color
参数留空,它会是透明的,但它会创建浅灰色背景,因此不透明。
我怎样才能实现这个目标?
最佳答案
如果您只想要透明背景,则不需要单独的图像文件。只需裁剪图像并调整其大小即可。
<?php
header('Content-type: image/png');
$path = 'image.jpg';
$image = new Imagick($path);
$geometry = $image->getImageGeometry();
$width = $geometry['width'];
$height = $geometry['height'];
$crop_width = 225;
$crop_height = 430;
$crop_x = ($width - $crop_width) / 2;
$crop_y = ($height - $crop_height) / 2;
$size = 500;
$image->cropImage($crop_width, $crop_height, $crop_x, $crop_y);
$image->setImageFormat('png');
$image->setImageBackgroundColor(new ImagickPixel('transparent'));
$image->extentImage($size, $size, -($size - $crop_width) / 2, -($size - $crop_height) / 2);
echo $image;
使用setImageFormat
将图像转换为 PNG(以允许透明度),然后使用 setImageBackgroundColor
设置透明背景。最后,使用extentImage
调整其大小。
关于PHP Imagick - 将裁剪图像置于另一个图像之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28676649/
我想把一张图片转成只有黑白两种颜色的GIF格式 因此输出图像中的每个像素都将是黑色或白色 有人知道在 imagick 中进行转换的方法吗? 最佳答案 虽然写出双色 gif 的最终转换是相同的,但将图像
我在 Imagick 中设置图像的重力时遇到了一些真正的困难。 我已经成功地设置了 ImaickDraw 对象的引力,但是我没有成功地在 Imagick 对象中设置它。 下面是我当时正在使用的基本代码
resizeImage 和 scaleImage 有什么区别? 如果图像的大小大于 $myLimit,我需要调整图像的大小 示例(伪代码): $myLimit = 1MB user uplaod an
我在为 laravel 安装 devisephp 时遇到了问题。我正在使用 php7 开发最新版本的宅基地。当我进行 Composer 更新时,出现以下错误。 Problem 1 - Inst
我正在使用以下代码在另一个图像上屏蔽一个图像。在输出时,它给了我一个黑色背景的图像。 但我需要白色背景或透明背景。 以下是我用来将一个图像屏蔽在另一个图像上的代码。 resizeImage(274,
我想在具有特定宽度、高度和顶部位置的 Imagick 对象中使一个区域透明。 例如,我需要一个从第 15 像素到顶部的 30px x 30px 的透明区域,但我找不到实现它的方法。 $canvas1
我需要能够在图像内自动写入一些文本。根据图像亮度,脚本必须用白色或黑色书写。 那么如何使用 Imagick 检查图像的亮度/暗度? 最佳答案 你可以这样做: // Load the image $im
我刚刚开始使用 PHP 的 Imageick 库。 我首先裁剪用户图像,如下所示: $img_path = 'image.jpg'; $img = new Imagick($img_path); $i
我需要能够在图像内自动写入一些文本。根据图像亮度,脚本必须用白色或黑色书写。 那么如何使用 Imagick 检查图像的亮度/暗度? 最佳答案 你可以这样做: // Load the image $im
我对 iMagick 还很陌生,只找到了非常有限的 PHP 库文档。我很乐意调整图像大小并将它们写回硬盘驱动器,但我完全无法使用 JPG 等方式压缩图像。 这是我目前使用的代码: function s
我正在用js操作图像,我想保存这些转换后的图像。我正在使用 ajax 发布此数据: image : canvas.toDataURL('image/jpeg') 通过这种方式,我获得了图像的 base
简单调用 Imagick 类时: $image = new Imagick('/images/magick/atmsk.png'); 我收到错误信息: Fatal error: Uncaught ex
如何有效地压缩 PNG?就我而言,图像是具有透明度的小灰度图像。 目前我正在玩这个: // ... $im->setImageFormat('png'); $im->setImageColorspac
我正在尝试使用 Imagick 编辑图像,但出现如下异常: ImagickException: UnableToLoadModule `C:\xampp\apache\bin\IM_MOD_RL_J
我使用下面的代码来创建宝丽来效果,但它真的很分散注意力,周围没有任何透明效果。 polaroidImage(new ImagickDraw(), 25); /* output the image */
我必须在 PHP CLI 上用 Imagick 渲染一些东西。我注意到服务器内存每隔 3-5 天就会变满,所以我什至无法通过 ssh 或 ftp 连接。 我使用 memory_get_usage()
我希望能够使用 Imagick PHP 扩展检测图像是否透明。 到目前为止,我唯一的幸运就是运行 exec()/其他一些命令,并使用 ImageMagick 命令行工具来实现它。这就是我的意思: ex
我已经安装了 imagick php 模块,还使用 Brew 安装了 Image Magick。安装并添加到 php.ini 中的扩展后,我在 Apache (XAMPP) 启动时收到此错误。 d
我刚刚开始使用 Imagick/ImageMagick 库编写一些 PHP,并且看到了几个关于 setImageCompression 的示例,它们似乎以不同的方式实现了一些东西。 例如我看到它是这样
我有两张图片(第一个和第二个链接)。 First image Second image Third image 第三张图片由 imagick 生成,代码: $image1 = new \imagick
我是一名优秀的程序员,十分优秀!