在制作网页过程中,有时候需要使用到正方形的图片,然而一般我们的拍摄的照片都为长方形的,要是长方的图片在网页上显示的话图片会变形,所以需要处理一下.
本文简单介绍了怎样使用一些常见的程序语言将长方形的图片修改裁剪为正方形的图片。
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代码,可加入代码中实现实现简单的截取图片为正方形在线切图效果.