我正在努力允许用户上传我的网站的个人资料图片.我试图避免的经典例子是lotsoffish.com,每个用户的图像都是偏斜的,看起来很丑陋:

那么,我怎样才能逐步裁剪/创建标准尺寸版本的图像而不会出现上述偏斜?
我想将图像和其他文档以及每个图像的缩略图存储在PostgreSQL表中。原始文档和缩略图将是两个单独的bytea字段。PostgreSQL在Linux上运行。
因为图像数据可能来自几个不同的应用程序,所以我想将PostgreSQL中的图像处理代码(用于创建缩略图)作为一个函数,而不是每个单独的应用程序都必须创建缩略图。PostgreSQL有什么方法可以创建图像的缩略图?
我正在寻找复制,调整大小和移动图像.这与wordpress在上传时如何创建不同大小的图像类似.我希望这可以执行,而不会在运行页面时上传任何内容.
例:
$imagePath = 'http://example.com/images/myimageonserver.jpg';
$newImagePath = 'http://example.com/images/new/myimageonserver.jpg';
$newImageWidth = 300;
$newImageHeight = 200;
Run Code Online (Sandbox Code Playgroud)
有谁知道会这样做的脚本?或者一些有用的功能可以完成这项工作.
我如何创建一个流畅的图像,但我决定使用宽高比?(比方说16:9)
我已经把它变得流畅max-width: 100%;但我不能改变宽高比.
注意:图像在大多数情况下具有不同的宽高比.
我们目前正在设计一个为我们提供Retina图像的设计,奇怪的尺寸,即28 x 15像素,我相信这是不正确的,因为当你划分它时,你得到一个像14 x 7.5像素的奇数.
这是我一直在努力的规则,但设计师没有明白这一点,我认为我应该仔细检查具体规则是什么.
我已经在网上添加了外观,但似乎无法找到任何关于此的参考,所以听到大家对此事的看法会很棒.
谢谢
假设我们有一个400x200的图像和另一个200x400的图像,我希望它们适合200x200的盒子,所以第一个应该缩放到200x100,第二个应该缩放到100x200
我们不会提前知道图像的尺寸.
[编辑]很多好的答案,谢谢大家!
在http://www.html5canvastutorials.com/tutorials/html5-canvas-rectangles/之后,我在画布上并排绘制了一些矩形.问题是它们看起来大大放大了; 它们的缩放比例为1.0,大约是原始尺寸的五倍; 它们看起来尺寸正确(如果边界模糊),缩放大约0.16.
我希望通过使画布的像素尺寸更大并缩小来获得解决方法,但是在画布上获得1:1缩放的正确方法是什么?画布的宽度和高度设置为100%,主体的边距为0.手动将画布的宽度和高度设置为窗口的高度和宽度不会改变此行为.
TIA,
我想扩大图片的一部分,在这个例子中,是一个鼻子.
我有一个功能来选择我要放大的图片部分.
def copyAndPaste(picture):
height = getHeight(picture)
width = getWidth(picture)
newPicture = makeEmptyPicture(width, height)
for x in range(width):
for y in range(height):
pxl = getPixel(picture,x,y)
if (x>48 and x<59) and (y>58 and y<71):
newPxl =getPixel(newPicture, #?,#?)
else:
newPxl = getPixel(newPicture, x,y)
color = getColor(pxl)
setColor(newPxl,color)
return newPicture
def d():
f=pickAFile()
picture=makePicture(f)
newPicture = copyAndPaste(picture)
writePictureTo(newPicture, r"D:\FOLDER\0Pic4.jpg")
explore (newPicture)
Run Code Online (Sandbox Code Playgroud)

我还有一个放大图片的功能:
def Enlarge(picture):
height = getHeight(picture)
width = getWidth(picture)
newPicture = makeEmptyPicture(width*2, height*2)
x1=0
for x in range(0,width):
y1=0
for y in …Run Code Online (Sandbox Code Playgroud)