/**
* 重新设置图片大小
* @param srcImage
* @return
*/
private BufferedImage resize(BufferedImage srcImage) {
int width = srcImage.getWidth();
int height = srcImage.getHeight();
if (this.width > 0 && this.height > 0) {
if (this.fixedGivenSize) {
this.givenWidth = this.width;
this.givenHeight = this.height;
if (!this.keepRatio) {
width = this.width;
height = this.height;
}
}
if (this.keepRatio) {
int drawWidth = this.width;
int drawHeight = this.height;
double sourceRatio = (double) width / (double) height;
double targetRatio = (double) this.width / (double) this.height;
if (Double.compare(sourceRatio, targetRatio) != 0) {
if (sourceRatio > targetRatio) {
drawHeight = (int) Math.round(this.width / sourceRatio);
} else {
drawWidth = (int) Math.round(this.height * sourceRatio);
}
}
if (!this.fixedGivenSize) {
this.givenWidth = drawWidth;
this.givenHeight = drawHeight;
}
width = drawWidth;
height = drawHeight;
}
} else if (this.scale > 0) {
width = (int)(width * this.scale);
height = (int)(height * this.scale);
} else if (this.width > 0 && this.height == 0) {
height = this.width * height / width;
width = this.width;
} else if (this.width == 0 && this.height > 0) {
width = this.height * width / height;
height = this.height;
}
if (width <= 1 || height <= 1) {
throw new IllegalStateException("width or height value error!");
}
this.width = width;
this.height = height;
this.givenWidth = (this.givenWidth == 0 ? width : this.givenWidth);
this.givenHeight = (this.givenHeight == 0 ? height : this.givenHeight);
return this.createImage(srcImage, width, height);
}