I have observed the content links with images in facebook wrong size. Facebook has given some specifications for images with content links. To get best look and feel, we need to optimize our images. Whatever images you are sharing, convert that image size into optimized image size.
If you create an Image of size 730 X 500 ,then what you have to do optimize the image for facebook. You might need photoshop or any other image manipulation tool for adjusting size. Here I am giving you the quick way of doing this by java program.Facebook Optimized Image Size
1200 X 300
600 X 315
600 X 600
Java Library :
For quality image scaling, I have used java-image-scaling library.Java Code
Replace destinationDir with your destination folder path to save images. Give your image path to sourceImage
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import javax.imageio.ImageIO; import com.mortennobel.imagescaling.ResampleOp; public class FacebookLinkSharedImages { static String destinationDir = "C:\\fbIcons"; static String sourceImage = "C:\\facebook1.png"; static ArrayList<Dimension> dimensions = new ArrayList<Dimension>(); public static void main(String[] args) throws IOException { dimensions.add(new Dimension(1200,630)); dimensions.add(new Dimension(600,315)); dimensions.add(new Dimension(600,600)); readFile(destinationDir); } public static void readFile(String path) throws IOException { File dir = new File(destinationDir); if(!dir.exists()) { dir.mkdirs(); } BufferedImage bufferedImg = ImageIO.read(new File(sourceImage)); for(Dimension dim : dimensions) { String destFilePath = destinationDir+"\\icon"+(int)dim.getWidth()+"X"+(int)dim.getHeight()+".png"; File destFile = new File(destFilePath); if(!destFile.exists()) { destFile.createNewFile(); } System.out.println("File "+ destFile.getAbsolutePath()); ImageIO.write(createScreenImage(bufferedImg,(int)dim.getWidth(),(int)dim.getHeight()), "png", destFile); } } private static BufferedImage createScreenImage(BufferedImage appIconImg, int width, int height) throws IOException { int type = appIconImg.getType() == 0? BufferedImage.TYPE_INT_ARGB : appIconImg.getType(); BufferedImage newPGScreen = new BufferedImage(width, height, type); Graphics2D g = newPGScreen.createGraphics(); g.setColor(new Color(255,255,255)); g.fillRect(0, 0, width, height); double tw = (double)width, th = (double)height; int iw = appIconImg.getWidth(); int ih = appIconImg.getHeight(); double iwf = (double)(tw / iw); double ihf = (double)(th / ih); double imf = iwf < ihf ? iwf:ihf; int tfw = (int)(imf * iw); int tfh = (int)(imf * ih); ResampleOp resampleOp = new ResampleOp(tfw, tfh); BufferedImage resizedIcon = resampleOp.filter(appIconImg, null); g.drawImage(resizedIcon, (int)((tw - tfw)/2), (int)((th - tfh)/2) , null); g.dispose(); return newPGScreen; } }
0 comments:
Post a Comment