Quiero reducir el tamaño del archivo de imagen de una imagen cargada antes de guardarla en el servidor (para reducir el tiempo de carga). ¿Cómo puedo hacerlo usando Java?Cómo reducir el tamaño del archivo de imagen en java
Respuesta
Este tipo de pregunta ha sido respondida bastantes veces en este sitio. Le sugiero que consulte How to resize the original image into a common size of image in Java? o busque el tamaño de imagen de java en este sitio.
en realidad estaba hablando del tamaño del archivo (3mb -> 200 kb), no las dimensiones de la imagen. ¿Los cubre también? – Anand
Sí, es el mismo tipo de cosa: el tamaño del archivo está definido principalmente por las dimensiones de la imagen (y posiblemente la compresión de la imagen, dependiendo del formato utilizado) –
/*
* This will get an image file and returns a byte array resized by the given value.
*/
package tajneed;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import javax.imageio.ImageIO;
import org.imgscalr.Scalr;
public class ImageResizer {
public static byte[] resize(File icon) {
try {
BufferedImage originalImage = ImageIO.read(icon);
originalImage= Scalr.resize(originalImage, Scalr.Method.QUALITY, Scalr.Mode.FIT_EXACT, 128, 153);
//To save with original ratio uncomment next line and comment the above.
//originalImage= Scalr.resize(originalImage, 153, 128);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();
return imageInByte;
} catch (Exception e) {
return null;
}
}
}
Que este código sea útil le ayudará a cambiar el tamaño y la calidad de las imágenes.
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
} else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
System.out.println("Unable to load image" + e.getMessage());}
Iterator itr = items.iterator();
while(itr.hasNext()) {
System.out.println(items.size());
FileItem item = (FileItem) itr.next();
if (!item.isFormField()) {
try {
int size = 200;// size of the new image.
//take the file as inputstream.
InputStream imageStream = item.getInputStream();
//read the image as a BufferedImage.
BufferedImage image = javax.imageio.ImageIO.read(imageStream);
//cal the sacleImage method.
BufferedImage newImage = scaleImage(image, size);
String path = getServletContext().getRealPath("/image");
//write file.
File file = new File(path, "testimage.jpg");
ImageIO.write(newImage, "JPG", file);
} catch (Exception e) {
System.out.println("Unable to save the image" + e.getMessage());
//System.out.println(path);
}//if
}//iter
}
private BufferedImage scaleImage(BufferedImage bufferedImage, int size) {
double boundSize = size;
int origWidth = bufferedImage.getWidth();
int origHeight = bufferedImage.getHeight();
double scale;
if (origHeight > origWidth)
scale = boundSize/origHeight;
else
scale = boundSize/origWidth;
//* Don't scale up small images.
if (scale > 1.0)
return (bufferedImage);
int scaledWidth = (int) (scale * origWidth);
int scaledHeight = (int) (scale * origHeight);
Image scaledImage = bufferedImage.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH);
// new ImageIcon(image); // load image
// scaledWidth = scaledImage.getWidth(null);
// scaledHeight = scaledImage.getHeight(null);
BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = scaledBI.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(scaledImage, 0, 0, null);
g.dispose();
return (scaledBI);
}
- 1. Cómo reducir el tamaño del archivo de imagen usando PIL
- 2. Android - Reducir el tamaño del archivo de imagen
- 3. Reducir el tamaño del archivo jar externo
- 4. Reducir el tamaño del archivo de pdf
- 5. Cómo reducir el tamaño del archivo de audio en IOS
- 6. Cómo reducir el tamaño de imagen JPEG en Android
- 7. Reducir el tamaño de la imagen C#
- 8. Cómo reducir el tamaño del archivo Eclipse PDOM?
- 9. Crear miniaturas y reducir el tamaño de la imagen
- 10. py2exe: Reducir el tamaño del archivo de la biblioteca
- 11. cómo reducir el tamaño de UIImage ...?
- 12. Cómo calcular el tamaño del archivo BufferedImage java
- 13. Cómo reducir el tamaño del PDF generado por BIRT con la imagen de fondo?
- 14. Reducir el tamaño del repositorio git
- 15. cómo reducir el tamaño de la imagen grande al tamaño de la miniatura en android
- 16. Android reducir el tamaño de imagen de cámara
- 17. comprimir el tamaño del archivo de imagen al cargarlo?
- 18. Cómo reducir el tamaño de RTF con imágenes incrustadas?
- 19. ¿Cómo conseguir el tamaño del archivo en Java
- 20. ¿Cómo cambiar el tamaño de la imagen original en un tamaño de imagen común en Java?
- 21. jQuery fullcalendar - cómo reducir el tamaño del calendario
- 22. Cómo reducir el tamaño de std :: vector?
- 23. Cómo reducir el tamaño del gráfico circular KendoUI?
- 24. Cómo reducir el tamaño de la imagen de recorte en el iphone?
- 25. cambiar el tamaño de la imagen del archivo
- 26. ¿Cómo optimizar el tamaño del archivo PDF?
- 27. Cómo reducir el tamaño de Heap de WebSphere Server
- 28. Reducir el tamaño del vídeo con el mismo formato y la reducción de tamaño del marco
- 29. iOS: cómo reducir el tamaño de los archivos PNG grandes
- 30. IOS: reduzca el tamaño de la imagen sin reducir la calidad de la imagen
Puede guardar la imagen en un formato comprimido, como JPEG o PNG. – christian