close

ImageMagick-6.4.5-4-Q8-windows-dll.exe



使用小型PNG切圖時會有切完大小不正確的問題,



例如90x90的圖使用-crop 90x90+0+0切圖後,



會成為90x75,



雖然我知道-crop 90x90,可解決這個問題,



-crop WidthxHeight不適用於大圖裁切,



例如3200x2000的圖使用-crop 1600x1600,



裁切出來的圖會是檔案名稱-0~檔案名稱-N個檔案,



後來IM的官方論壇Bug區提出了一個很簡單的暫時替代方案,



就是先將PNG直接轉換成JPG後,再做處理,



convert 823185.png -resize 90x90 823185.jpg
convert 823185.jpg -gravity Center -crop 90x90+0+0 +repage tmp_1.jpg
del 823185.jpg
identify tmp_1.jpg



使用Jmagick時


//很重要,使用tomcat時沒加這行會找不到dll檔System.setProperty("jmagick.systemclassloader","no");ImageInfo info = new ImageInfo(src_file_path);info.setQuality(getQuality());info.setCompression(CompressionType.JPEGCompression);info.setPreviewType(PreviewType.JPEGPreview);MagickImage image = new MagickImage(info);//判斷圖片為PNG,先做轉換if(image.getImageFormat().equalsIgnoreCase("png")){  image.setFileName(dest_file_path);  image.writeImage(info);  info=new ImageInfo(dest_file_path);  info.setQuality(getQuality());  info.setCompression(CompressionType.JPEGCompression);  info.setPreviewType(PreviewType.JPEGPreview);  image = new MagickImage(info);}//再來圖片就任你處理了MagickImage smaller=null;//照計算過後的範圍切圖Rectangle rt=new Rectangle(x,y,width,height);smaller=image.cropImage(rt);//或是要縮圖smaller=smaller.scaleImage(width,height);//或是逆時鐘旋轉90度smaller=smaller.rotateImage(-90);//或是順時鐘旋轉90度smaller=smaller.rotateImage(90);//或是垂直翻轉smaller=smaller.flipImage();//或是水平翻轉smaller=smaller.flopImage();//將縮圖存到實體檔案smaller.setFileName(dest_file_path);smaller.writeImage(info);
arrow
arrow
    全站熱搜

    gan068 發表在 痞客邦 留言(0) 人氣()