技术开发 频道

在Java中创建高品质缩略图

  【IT168 技术文档】ImageMagick是用C/C++写的高性能图像分析处理软件。可以编辑、显示包括JPEG、TIFF、PNM、PNG、GIF和Photo CD在内的绝大多数当今最流行的图象格式。你可以改变图象尺寸、旋转、锐化、减少颜色或加入特殊效果到图象里,并且能够以另一种图象格式保存。

  采用ImageMagick + JMagick API 或调用命令行编译及运行时需要用到附件的jmagick.jar

   安装JMagick生成的jar

  环境在Linux下

  附:

/** * 通过JMagick创建缩略图 * * @param picFrom * 来源图片 * @param picTo * 目标图片 * @param width * 宽 * @param height * 高 */ public static final void resizeWithXY(String picFrom, String picTo, int width, int height) { MagickImage image = null; MagickImage scaled = null; ImageInfo info = null; try { info = new ImageInfo(picFrom); image = new MagickImage(info); scaled = image.scaleImage(width, height); scaled.setFileName(picTo); scaled.writeImage(info); } catch (MagickApiException ex) { logger.error(ex + ": " + ex.getReason() + ", " + ex.getDescription()); } catch (MagickException ex) { logger.error("MagickException: " + ex); } finally { image.destroyImages(); scaled.destroyImages(); image = null; scaled = null; info = null; } } /** * 通过最大值(宽或高)产生缩略图 * * @param picFrom * 来源图片 * @param picTo * 目标图片 * @param maxSize * 宽或高的最大值 */ public static final void resizeWithMaxSize(String picFrom, String picTo, int maxSize) { MagickImage image = null; MagickImage scaled = null; ImageInfo info = null; try { info = new ImageInfo(picFrom); image = new MagickImage(info); float wScale = (float) maxSize / (float) image.getXResolution(); float hScale = (float) maxSize / (float) image.getYResolution(); // 计算缩放比例 float scale = Math.min(wScale, hScale); if ((double) scale > 1.0D) scale = 1.0F; wScale = scale; hScale = scale; // 产生缩略图 scaled = image.scaleImage( (int) ((float) image.getXResolution() * wScale), (int) ((float) image.getYResolution() * hScale)); scaled.setFileName(picTo); scaled.writeImage(info); } catch (MagickApiException ex) { logger.error(ex + ": " + ex.getReason() + ", " + ex.getDescription()); } catch (MagickException ex) { logger.error("MagickException: " + ex); } finally { image.destroyImages(); scaled.destroyImages(); image = null; scaled = null; info = null; } }
0
相关文章