【问题标题】:WideImage - Canvas with transparent backgroundWideImage - 具有透明背景的画布
【发布时间】:2016-09-24 12:32:18
【问题描述】:

我们使用的是内置 WideImage 的 CMS,无法更改这一点,但是我们遇到了需要生成 300x300 图像的情况。

不过,上传的图片大小约为 100x100,采用 jpg 和 png 格式,具有不同的透明度。

我正在尝试创建一个 300x300 的画布,并将 100x100 的图像放置在其中 - 但是我希望画布保持透明,并将图像放置在顶部以保持其透明度。

我有

$image = WideImage::loadFromFile( $this->local_path );

$canvas = WideImage::createTrueColorImage(300, 300);
$canvas_bg = $canvas->allocateColor(255, 255, 255);
$canvas->fill(0, 0, $canvas_bg);

$resized_image = $canvas->merge($image);

但这显然只是在画布上添加了一个白色背景,我无法从他们的文档中弄清楚如何使其透明。

谢谢

【问题讨论】:

    标签: php transparency wideimage


    【解决方案1】:

    怎么样:

    $image = WideImage::loadFromFile($this->local_path);
    $resized_image = $image->resizeCanvas(300, 300, 0, 0);
    

    您可以指定图像在新画布中的 X 和 Y 位置以及其宽度和高度。 $image->resizeCanvas(300, 300, "center", "center") 效果很好。

    【讨论】:

    • 这并不能解决新画布上缺乏透明度的问题,这会产生类似 -> i.imgur.com/kHp1CDq.jpg
    • 这是一个不起作用的示例图像,也许对你有用s33.postimg.org/c6lfmia7j/wu9100.png
    • 虽然我现在注意到,如果我将“比例”参数设置为“向下”,它会删除黑色信箱,但现在图像是 250x250,即使我通过了 300
    • 使用$image->resizeCanvas(300, 300, "center", "center") 和您来自 postimg.org 的图片对我来说效果很好。我的输出是imgur.com/vkR6pyC。我在 Ubuntu 上的 PHP 5.6.11 上使用 WideImage 11.02.19,GD 版本 2.1.1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 2016-04-21
    • 2019-04-16
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多