में थंबनेल (बाइट []) बनाएं और दिखाएं मैं सर्वर पर छवि अपलोड कर रहा हूं और जब छवि अपलोड की जाती है तो मुझे अपलोड की गई छवि का अंगूठा दिखाना चाहिए। थंबनेल हार्ड डिस्क पर सहेजा नहीं गया है मैं इनपुटस्ट्रीम और आउटपुटस्ट्रीम का उपयोग करता हूं। अपलोड के लिए मैं ustig tomahawk हूँ।जेएसएफ
मेरी index.jsp:
<h:form id="uploadForm" enctype="multipart/form-data">
<t:inputFileUpload id="fileupload"
accept="image/*"
storage="file"
value="#{fileUpload.uploadedFile}"
styleClass="fileUploadInput"
required="true"
validator="epacient.FileUploadValidator"
requiredMessage="Obvezna izbira datoteke."
/>
<br />
<h:message for="fileupload" infoStyle="color: green;"
errorStyle="color: red;" />
<br />
<h:commandButton value="Upload" id="fileUploadButton"
action="#{fileUpload.upload}" />
<h:message for="uploadForm" style="color: red;" />
<h:graphicImage value="#{fileUpload.thumb}"
rendered="#{fileUpload.uploaded}" />
</h:form>
fileUpload.upload कॉल समारोह String preview()
private String thumb ;
public String preview() throws IOException{
HttpServletResponse response = (HttpServletResponse)FacesContext
.getCurrentInstance().getExternalContext().getResponse();
try {
FacesContext context = FacesContext.getCurrentInstance();
Map requestMap = context.getExternalContext().getApplicationMap();
byte[] bytes = (byte[])(requestMap.get("fileupload_bytes"));
// returns byte[]
byte[] testByte = createThumbnail(bytes, 200);
// here thumbnail is created
} catch (Exception ex) {
ex.printStackTrace();
}
}
createThumbnail:
public static byte[] createThumbnail(byte[] orig, int maxDim) {
try {
ImageIcon imageIcon = new ImageIcon(orig);
Image inImage = imageIcon.getImage();
double scale = (double) maxDim/(double) inImage.getWidth(null);
int scaledW = (int) (scale * inImage.getWidth(null));
int scaledH = (int) (scale * inImage.getHeight(null));
BufferedImage outImage = new BufferedImage(scaledW, scaledH, BufferedImage.TYPE_INT_RGB);
AffineTransform tx = new AffineTransform();
if (scale < 1.0d) {
tx.scale(scale, scale);
}
Graphics2D g2d = outImage.createGraphics();
g2d.drawImage(inImage, tx, null);
g2d.dispose();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(outImage, "JPG", baos);
byte[] bytesOut = baos.toByteArray();
return bytesOut;
} catch (IOException e) {
System.out.println("Erro: " + e.getMessage());
e.printStackTrace();
}
return null;
}
अब मैं अपने थंबनेल है, लेकिन यह किसी भी byte[]
कर सकते में है शरीर मुझे बताएं कि मेरे अंगूठे कोके साथ कैसे दिखाना है 10 टैग? या किसी अन्य तरीके से।
धन्यवाद!
a4j: मीडिया आउटपुट में छवि आकार पर बाधा होती है क्योंकि यह छवि सामग्री को URL (बेस 64 फॉर्म) में एन्कोड करता है। यह केवल छोटे आइकन के लिए ही लागू है – vim