标签: gd2

使用PHP将SVG图像转换为PNG

我正在开发一个Web项目,该项目涉及动态生成的美国地图,该地图基于一组数据着色不同的状态.

这个SVG文件给了我一张很好的美国空白地图,很容易改变每个州的颜色.困难在于IE浏览器不支持SVG,所以为了让我使用svg提供的方便语法,我需要将它转换为JPG.

理想情况下,我只想使用GD2库,但也可以使用ImageMagick.我完全不知道如何做到这一点.

将考虑允许我动态改变美国地图上的状态颜色的任何解决方案.关键是它可以很容易地改变颜色并且它是跨浏览器的.请给我PHP/Apache解决方案.

php svg jpeg imagemagick gd2

104
推荐指数
5
解决办法
12万
查看次数

如何在调整图像大小时阻止GD2清除颜色?

我使用CodeIgniter 1.7开发了一个照片共享社区网站.成员上传的照片会自动调整为多种格式,我使用CodeIgniter Image Manipulation类.该类内置于框架中,基本上是多个图像处理库的包装器,如GD,GD2,ImageMagick和NETPBM.在我的主机上,我只能使用GD2,所以这就是这个问题的所在.

关于我的问题.以下是我网站上已调整大小的照片示例.请注意,原件非常大,宽度超过3000像素:

http://www.jungledragon.com/image/195/female_impala_close-up.html

现在,看看同样的图像,也调整大小,在Flickr上稍大一些:

http://www.flickr.com/photos/fledder/3763538865/in/set-72157621744113979

看到戏剧性的差异?我正试图弥合这个巨大的差距.我做的第一件事是对图像应用锐化滤镜.你可以在这里看到结果:

在此输入图像描述

虽然仍然不完美,但它至少接近Flickr图像的清晰度水平.剩下的问题是颜色被冲走,好像它们的饱和度降低了.这种情况发生在锐化滤镜之前,因此它必须在GD2中.

这个问题对我来说至关重要,但我不知道在哪里看.我发现一些.NET线程正在谈论色度子采样,但我不知道在我的设置中如何处理这些信息.我正在寻找在我的设置约束下工作的任何解决方案.

更新:这里是原始文件,就像我将它上传到我的网站和Flickr一样:

http://www.jungledragon.com/img/DSC07275.jpg

更新2:我很震惊.好的方式.安装ImageMagick但是在切换到它之后花了很多痛苦(这是将'imagemagick'设置为Code Igniter图像处理类使用的库的问题,测试图像的结果如下:

在此输入图像描述

ImageMagick的调整大小正是按预期完成的.颜色被保留,清晰度就在那里.是的,我禁用了自定义锐化程序,因为ImageMagick不再需要它.最重要的是,这个过程更快,内存也更少.这里有另一个很大的部分:我无法解释它,但我绝对没有告诉ImageMagick使用特定的颜色配置文件,这是由用户@Alix建议的.到目前为止,在我的测试中,无论是否有嵌入的配置文件,都可以看到颜色信息.输出只是输入的较小版本.ImageMagick真的那么聪明还是我在做梦?

php codeigniter gd2 image-resizing

34
推荐指数
3
解决办法
1万
查看次数

GD2扩展是否附带PHP?

GD2扩展默认是否附带PHP?如果是,那么它会发生什么版本?它是默认启用的吗?

谢谢 (:

php gd gd2

11
推荐指数
2
解决办法
2万
查看次数

Magento调整大小()图像质量:脏白色背景

我有一个客户对他们的产品缩略图在Magento上呈现的方式非常不满意.

两个帐户的狡猾外观是显而易见的:

  • 有一个肮脏的白色背景,有非常浅灰色的水平线
  • 其次,颜色会有轻微的损失(失去对比度和饱和度).

我已经删除了所有压缩,将所有质量设置为100%,刷新了图像缓存,进行了实验,破解,并将其修复了几十次,似乎没有任何效果.

这个版本的Magento是ver.1.4.2.0

有没有人在这里遇到同样的问题,如果是这样,你设法解决它?

thumbnails magento gd2

9
推荐指数
2
解决办法
2万
查看次数

如何在CodeIgniter PHP应用程序中加快图像大小调整?

我有一个允许用户上传图像的应用程序.我使用的测试用例是一个1.6MB的jpeg,尺寸为3872 x 2592px.后端的上传脚本会将上传的图像调整为另外6种格式:

  • 方形(小75 x 75)
  • 小拇指(50 x 38)
  • 拇指(100 x 76)
  • 小(240 x 161)
  • 中等(500 x 378)
  • 大(1024 x 774)

我知道这很多但是相信我,我需要这个.我使用Code Igniter的Image Manipulation类进行调整大小,该类使用GD,GD2或ImageMagick进行调整大小.我首先将它配置为使用GD2,并注意到总调整大小过程需要11秒.

由于用户必须等待此过程,因此不可接受.经过大量阅读后,我了解到ImageMagick是一个更快更有效的操作库,所以我切换到了:

$sourceimage = $data['filedata']['file_path'] . $data['imagedata']['user_id'] . "/" . $imageid . $data['filedata']['file_ext'];
$resize_settings['image_library'] = 'imagemagick';
$resize_settings['library_path'] = '/usr/bin';
$resize_settings['source_image'] = $sourceimage;
$resize_settings['maintain_ratio'] = false;
$resize_settings['quality'] = "100%";
$this->load->library('image_lib', $resize_settings);
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,调整大小过程现在需要更长的时间:特定的15秒.

看一下我的日志,我看到每个调整大小动作需要2秒,无论它调整大小的文件格式.我想这是因为我总是从原来的大小调整,这是非常大的.

我不想将调整大小过程卸载到预定的进程,因为这会降低站点的可用性.这意味着用户必须等待几分钟才能开始查看/使用图像.

那么,有什么聪明的方法可以大大加快这个调整大小过程,以便我可以实时保存它吗?请注意:允许较小的分辨率不是一种选择,这是我正在建立的摄影网站.另外,我真的需要提到的六种格式.

php codeigniter imagemagick gd2

7
推荐指数
2
解决办法
6184
查看次数

PHP GD2:如何保持alpha通道透明度和正确的gamma

我对图像缩放的讨论很感兴趣,后来发现我用来从上传的图像创建缩略图的PHP代码遇到了同样的问题.我决定尝试在底部附近发布的PHP修补程序(将伽玛值从2.2转换为1.0,调整图像大小,将伽玛值从1.0转换回2.2).这有助于解决文章中提到的问题,但是对代码的这种修改具有淘汰PNG alpha通道透明度的不幸副作用.

这是我对伽马校正的代码.

<?php
$image = imagecreatefrompng($source_file);
$resized_image = imagecreatetruecolor($new_width, $new_height);
imagealphablending($resized_image, false);
imagesavealpha($resized_image, true);
imagegammacorrect($image, 2.2, 1.0);
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
imagegammacorrect($resized_image, 1.0, 2.2);
imagepng($resized_image, $dest_file);
?>
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何调整图像大小,采用伽马校正技巧,同时保持原始图像的alpha通道透明度?

编辑

样本图片:

  1. 原始文件 - 具有Alpha通道透明度的PNG
  2. 调整了两个imagegammacorrect()函数调用的调整大小的文件
  3. 调整大小的文件,同时调用imagegammacorrect()函数

在尝试更正伽玛之前,您可以看到透明度很好.(查看透明度的最简单方法是检查包裹在图像周围的段落标记,并通过FireBug或类似方法添加背景:black;到其样式属性.)

原始图像http://ender.hosting.emarketsouth.com/images/test-image.png 没有伽马校正http://ender.hosting.emarketsouth.com/images/test-image-resized-no-gamma.png 伽玛纠正 - 没有透明度http://ender.hosting.emarketsouth.com/images/test-image-resized.png

php png transparency gamma gd2

5
推荐指数
1
解决办法
5428
查看次数

在PHP中启用GD支持

我正在尝试在Windows上的Apache服务器上安装pixelpost.安装程序失败,因为:

如果您的PHP安装未使用GD图形库进行编译,则Pixelpost将无法运行.

我已经将以下行添加到php.ini中

extension=php_gd2.dll
Run Code Online (Sandbox Code Playgroud)

但我仍然得到相同的错误消息.当我运行时,phpinfo()我没有看到任何GD的引用,所以我猜它确实没有安装.我搜索了php_gd2.dll它,它在ext我的PHP根目录的子文件夹中.

我对PHP一无所知,所以对我很温柔.

更新

回答评论中提出的问题:

  • 我在修改后重新启动了Apache php.ini
  • php.ini 在我的PHP安装的根目录中 C:\php\php.ini

php gd2

5
推荐指数
1
解决办法
2万
查看次数

如何处理图像的mime类型"application/octet-stream"?

我有一个功能,可以在飞行中制作网址图片缩略图!我总是传递给jpg类型的这个函数图像,但是当我传递带有".jpg"扩展名的图像时会出现问题.但是当我尝试获取它的mime类型时,我发现它的" application/octet-stream "..在这个php页面中,这个mime类型指的是其中一个

IMAGETYPE_JPC,IMAGETYPE_JPX,IMAGETYPE_JB2

我需要修改我的函数来处理这个mime类型?

注意^^^^^^

function thumb($path,$width,$height) // $path => image url
{
        $file_dimensions = getimagesize($path);
        $file_type = image_type_to_mime_type($file_dimensions[2]);
        list($Cwidth, $Cheight) = getimagesize($path);
        if ($file_type=='image/jpeg'||$file_type=='image/pjpeg'){
            // Load
        $thumb = imagecreatetruecolor($width, $height);
        $source = imagecreatefromjpeg($path);
        // Resize
        imagecopyresized($thumb, $source, 0, 0, 0, 0, $width, $height, $Cwidth, $Cheight);
        header('Content-Type: image/jpeg');
        imagejpeg($thumb);
        }
        else if ($file_type=='application/octet-stream')
        {
           // ^^^^^ what I should write here
        }
        else
        {
            echo "Not supported type";
        } 
} 
Run Code Online (Sandbox Code Playgroud)

php thumbnails gd2 mime-types

5
推荐指数
1
解决办法
2万
查看次数

Docker - 无法加载动态库“gd2”

我不明白如何在 linux mint 上使用 Docker 安装 gd2 库。这是我的 docker-compose 文件

version: '3'

services:

  web:
    build: ./web
    environment:
      - APACHE_RUN_USER=#1000
    volumes:
      - ${APP_PATH_HOST}:${APP_PATH_CONTAINER}
      - ./web/php.ini:/usr/local/etc/php/php.ini
    ports:
      - 8080:80
    working_dir: ${APP_PATH_CONTAINER}

  db:
    image: mariadb
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_USER: root
      MYSQL_ROOT_PASSWORD: 12345
      MYSQL_DATABASE: books
      MYSQL_USER: root
      MYSQL_PASSWORD: 12345
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ${DB_PATH_HOST}:/var/lib/mysql

  adminer:
    image: adminer
    restart: always
    ports:
      - 6080:8080

  composer:
    image: composer:1.6
    volumes:
      - ${APP_PATH_HOST}:${APP_PATH_CONTAINER}
    working_dir: ${APP_PATH_CONTAINER}
    command: composer install
Run Code Online (Sandbox Code Playgroud)

在我这样做之后docker-compose up --build,在构建过程中没有任何错误,但是当我这样做docker …

php gd2 docker

5
推荐指数
2
解决办法
6138
查看次数

GD和GD2图像之间有什么区别?

阅读imagegd2()imagegd()的文档,我注意到这些函数分别描述为:

  • 将GD2图像输出到浏览器或文件
  • 将GD图像输出到浏览器或文件

什么是GD2和GD图像?这些图像类型有什么区别?

php gd gd2

4
推荐指数
1
解决办法
7243
查看次数