搜 索

php代码将常见的长方形图片修改为正方形的图片

编辑:QTOOL.NET日期:2020-03-23687

在制作网页过程中,有时候需要使用到正方形的图片,然而一般我们的拍摄的照片都为长方形的,要是长方的图片在网页上显示的话图片会变形,所以需要处理一下.

本文简单介绍了怎样使用一些常见的程序语言将长方形的图片修改裁剪为正方形的图片。

php代码如下:

<?php

$picimg = "测试图片地址.jpg";

$picinfo = file_get_contents($picimg);

$iytpic = imagecreatefromstring($picinfo);

$y = imagesy($iytpic);

$x = imagesx($iytpic);

if($x>$y){

    $sx = abs(($y-$x)/2);

    $sy = 0;

    $jtdw = $y;

    $jtdgd = $y;

} else {

    $sy = abs(($x-$y)/2);

    $sx = 0;

    $jtdw = $x;

    $jtdgd = $x;

  }

if(function_exists("imagecreatetruecolor")){

  $toppic = imagecreatetruecolor(200, 200); 

}else{

  $toppic = imagecreate(200, 200); 

}

imagecopyresized ($toppic,$iytpic,0,0,$sx,$sy,200,200,$jtdw,$jtdgd);

imagejpeg ($toppic,"xxx.jpg");

?>

以上代码可以得到200*200的正方形图片。


python代码实现:

from PIL import Image

from os import listdir

import math

import numpy as np

import cv2


def piczfx( picpath):

    img = Image.open(picpath)

    width, height = img.size

    jscd = width - height

    if(jscd > 0):

        fhcya = jscd / height

        fhdsz = Image.new(img.mode, (width, height + jscd))

        crreg = img.crop((0, height - (jscd - fhcya * height), width, height))

        fhdsz.paste(crreg, box = (0, 0))

        for i in range(0, fhcya + 1):

            fhdsz.paste(img, box = (0, jscd - fhcya * height + i * height))

        return fhdsz

    elif(jscd < 0):

        jscd = abs(jscd)

        fhcya = jscd / width

        fhdsz = Image.new(img.mode, (width + jscd, height))

        crreg = img.crop((0, 0, jscd - fhcya * width, height))

        fhdsz.paste(crreg, box = (0, 0))

        for i in range(0, fhcya + 1):

            fhdsz.paste(img, box = (jscd - fhcya * width + i * width, 0))

        return fhdsz

    else:

        return img

 

def textureTransform( picpath, offsetX, offsetY, uvScale):

    imgOriginal = Image.open(picpath)

 

img = piczfx("需要处理的图片.jpg")

img.save("需要保存的图片路径")

以上就是使用php以及python代码,可加入代码中实现实现简单的截取图片为正方形在线切图效果.

TAG标签:phppython
此文章由QTOOL.NET编辑
最新文章

热门标签