Java通过仅使用iText限制比例和缩小比例来转换图像
我有一个简单的Java应用程序,它接收不同大小的图像并将其输出为PDF格式。它使用类com.lowagie.text.Image
(与iText<;=2.1.7一起使用的类),导入图像时,像素尺寸和dpi是已知的
如果图像不违反8.5英寸x11英寸纸张的约束条件,我想显示它。如果它太宽,我需要它来确定宽度减少的百分比,以计算在计算PDF上图像的最终宽度和高度时高度的变化。如果受高度限制,如果图像太高,则情况正好相反。最后,如果它太宽太高,我需要确定哪个是更大的减少百分比,并将高度和宽度都减少该值
我不想放大8.5x11限制范围内的图像(例如8.5x11->;11x14),只想缩小太大的图像
以下是我已知的价值观:
Original Width
Original Height
DPI
以下是我尝试过的许多尝试,但都没有成功。我很感激任何帮助
PlainW
是图像的原始宽度,而PlainH
是原始高度
if (PlainW >= 612) { //x is over or equal
xDiff = PlainW - 612;
xScale = PlainW / 612;
if (PlainH < 792) { //y is under
yDiff = 792 - PlainH;
yScale = PlainH / 792;
} else if (PlainH == 792) { //y is equal
yDiff = 792 - PlainH;
yScale = PlainH / 792;
} else if (PlainH > 792) { //y is over
yDiff = PlainH - 792;
yScale = PlainH / 792;
}
} else if (PlainW < 612) { //x is under
xDiff = 612 - PlainW;
xScale = PlainW / 162;
if (PlainH < 792) { //y is under
yDiff = 792 - PlainH;
yScale = PlainH / 792;
} else if (PlainH == 792) { //y is equal
yDiff = 792 - PlainH;
yScale = PlainH / 792;
} else if (PlainH > 792) { //y is over
yDiff = PlainH - 792;
yScale = PlainH / 792;
}
}
# 1 楼答案
你的代码真的很难理解!我将向您展示如何使其更简单
这是你的代码:
在每个条件中,你都有
yScale = PlainH / 792;
,把它放在外面,就像这样(另外我去掉了无用的注释):然后你有一些完全相同的条件,^
但是等等!比较两个整数,然后从最大整数中减去最小整数?为什么不直接取差值的绝对值呢
同样,我在条件语句中看到了相同的代码。把它移到外面去
同样,比较2个整数并从最大整数中减去最小整数可以替换为
Math.abs
看!您的代码从27行减少到只有4行,它包含零条件,并且更容易理解