0

我想使用 php 裁剪 .tif 格式的图像。如果图像是 .jpg 、 gif 或 png 格式,我已经完成了,但我想从 1024x1024 的完整图像中裁剪具有特定尺寸的 .tif 图像,即从 200x200 开始。请考虑它是 .tif 格式。

http://rkwebsolutions.in.md-16.webhostbox.net/check/8713855051.tif

我将此功能用于 jpeg/png/gif 格式的图像,但无法裁剪 .tif 图像

function cropImage($source_image, $target_image, $crop_area)
{
    // detect source image type from extension
    $source_file_name = basename($source_image);
    $source_image_type = substr($source_file_name, -3, 3);

    // create an image resource from the source image  
    switch(strtolower($source_image_type))
    {
        case 'jpg':
            $original_image = imagecreatefromjpeg($source_image);
            break;

        case 'gif':
            $original_image = imagecreatefromgif($source_image);
            break;

        case 'png':
            $original_image = imagecreatefrompng($source_image);
            break;    

        default:
            trigger_error('cropImage(): Invalid source image type', E_USER_ERROR);
            return false;
    }

    // create a blank image having the same width and height as the crop area
    // this will be our cropped image
    $cropped_image = imagecreatetruecolor($crop_area['width'], $crop_area['height']);

    // copy the crop area from the source image to the blank image created above
    imagecopy($cropped_image, $original_image, 0, 0, $crop_area['left'], $crop_area['top'], 
              $crop_area['width'], $crop_area['height']);

    // detect target image type from extension
    $target_file_name = basename($target_image);
    $target_image_type = substr($target_file_name, -3, 3);

    // save the cropped image to disk
    switch(strtolower($target_image_type))
    {
        case 'jpg':
            imagejpeg($cropped_image, $target_image, 100);
            break;

        case 'gif':
            imagegif($cropped_image, $target_image);
            break;

        case 'png':
            imagepng($cropped_image, $target_image, 0);
            break;    

        default:
            trigger_error('cropImage(): Invalid target image type', E_USER_ERROR);
            imagedestroy($cropped_image);
            imagedestroy($original_image);
            return false;
    }

    // free resources
    imagedestroy($cropped_image);
    imagedestroy($original_image);

    return true;
}


// using the function to crop an image
$source_image = 'image.jpg';
$target_image = 'cropped_image.jpg';
$crop_area = array('top' => 100, 'left' => 100, 'height' => 300, 'width' => 300);

cropImage($source_image, $target_image, $crop_area);

任何人都可以帮助提前谢谢。

4

1 回答 1

0

您可以先将图像转换为 jpg 而不是调整大小。如果您的服务器上安装了 imagemagic,则示例代码:

exec("convert /path/to/file.tiff /path/to/file.jpg", $err);
于 2013-05-14T08:08:02.023 回答