<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>image rotation on Conholdate Blog</title>
    <link>https://blog-qa.conholdate.com/vi/tag/image-rotation/</link>
    <description>Recent content in image rotation on Conholdate Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>vi</language>
    <lastBuildDate>Wed, 07 Oct 2026 17:53:30 +0000</lastBuildDate><atom:link href="https://blog-qa.conholdate.com/vi/tag/image-rotation/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Xoay hình ảnh trong Java</title>
      <link>https://blog-qa.conholdate.com/vi/total/rotate-image-in-java/</link>
      <pubDate>Wed, 07 Oct 2026 17:53:30 +0000</pubDate>
      
      <guid>https://blog-qa.conholdate.com/vi/total/rotate-image-in-java/</guid>
      <description>Tìm hiểu cách xoay ảnh PNG và JPG trong Java với Conholdate.Total for Java. Hướng dẫn này sẽ đi qua quá trình thiết lập, ví dụ mã và các tùy chọn xoay.</description>
      <content:encoded><![CDATA[<p>Việc xoay ảnh bằng lập trình là một nhu cầu thường gặp khi xây dựng các trình tạo bản xem trước, trình chỉnh sửa ảnh hoặc quy trình công việc tài liệu. <a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> cung cấp một SDK mạnh mẽ giúp việc thao tác ảnh trở nên đơn giản trong các ứng dụng Java. Trong hướng dẫn này, bạn sẽ học cách xoay các tệp <a href="https://docs.fileformat.com/image/png/">PNG</a> và <a href="https://docs.fileformat.com/image/jpg/">JPG</a>, cấu hình các tham số xoay, và bảo tồn siêu dữ liệu đồng thời giữ chất lượng ảnh cao.</p>
<h2 id="chuẩn-bị-môi-trường---các-yêu-cầu-và-cài-đặt">Chuẩn bị môi trường - Các yêu cầu và cài đặt</h2>
<p>Trước khi bắt đầu, hãy chắc chắn rằng bạn có những thứ sau:</p>
<ul>
<li>Đã cài đặt Java 17 hoặc mới hơn.</li>
<li>Một IDE như IntelliJ IDEA hoặc Eclipse.</li>
<li>Maven cho quản lý phụ thuộc.</li>
</ul>
<p>Thêm kho Maven của Conholdate và phụ thuộc SDK vào tệp <code>pom.xml</code> của bạn:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;repositories&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;repository&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;id&gt;</span>conholdate-repo<span style="color:#f92672">&lt;/id&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;name&gt;</span>Conholdate Maven Repository<span style="color:#f92672">&lt;/name&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;url&gt;</span>https://repository.conholdate.com/repo/<span style="color:#f92672">&lt;/url&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/repository&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/repositories&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;dependency&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;groupId&gt;</span>com.conholdate<span style="color:#f92672">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;artifactId&gt;</span>conholdate-total<span style="color:#f92672">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;version&gt;</span>24.9<span style="color:#f92672">&lt;/version&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;type&gt;</span>pom<span style="color:#f92672">&lt;/type&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/dependency&gt;</span>
</span></span></code></pre></div><p>Tải xuống các tệp nhị phân SDK mới nhất từ trang tải xuống chính thức: <a href="https://releases.conholdate.com/total/java/">Conholdate.Total for Java Download</a>. Khi các phụ thuộc đã được giải quyết, bạn đã sẵn sàng viết mã để quay ảnh.</p>
<h2 id="xoay-ảnh-trong-java-hướng-dẫn-chi-tiết-từng-bước">Xoay ảnh trong Java: Hướng dẫn chi tiết từng bước</h2>
<h3 id="bước-1-tải-đường-dẫn-nguồn-và-đích">Bước 1: Tải Đường dẫn Nguồn và Đích</h3>
<p>Xác định vị trí tệp đầu vào và đầu ra. SDK hỗ trợ cả định dạng PNG và JPG.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>String inputPath <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;input.jpg&#34;</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>String outputPath <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;output_rotated.jpg&#34;</span><span style="color:#f92672">;</span>
</span></span></code></pre></div><h3 id="bước-2-khởi-tạo-trình-xử-lý-chuyển-đổi-và-các-tùy-chọn">Bước 2: Khởi tạo Trình xử lý Chuyển đổi và Các tùy chọn</h3>
<p>Tạo các đối tượng cốt lõi điều khiển quá trình chuyển đổi.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>ConversionHandler handler <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ConversionHandler<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>ImageConvertOptions options <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ImageConvertOptions<span style="color:#f92672">();</span>
</span></span></code></pre></div><h3 id="bước-3-đặt-góc-xoay-và-màu-nền">Bước 3: Đặt góc xoay và màu nền</h3>
<p>Chỉ định số độ để xoay hình ảnh và màu nền cho các góc trống.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setRotateAngle</span><span style="color:#f92672">(</span>90<span style="color:#f92672">);</span>               <span style="color:#75715e">// Rotate 90 degrees clockwise
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setBackgroundColor</span><span style="color:#f92672">(</span>Color<span style="color:#f92672">.</span><span style="color:#a6e22e">WHITE</span><span style="color:#f92672">);</span>  <span style="color:#75715e">// Fill empty space with white
</span></span></span></code></pre></div><h3 id="bước-4-cấu-hình-các-tham-số-bổ-sung">Bước 4: Cấu hình các tham số bổ sung</h3>
<p>Giữ nguyên siêu dữ liệu gốc và xác định chất lượng <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a> khi đầu ra là JPG.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setPreserveMetadata</span><span style="color:#f92672">(</span><span style="color:#66d9ef">true</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setQuality</span><span style="color:#f92672">(</span>90<span style="color:#f92672">);</span> <span style="color:#75715e">// JPEG quality (0‑100)
</span></span></span></code></pre></div><h3 id="bước-5-thực-hiện-quay">Bước 5: Thực hiện quay</h3>
<p>Gọi phương thức <code>convert</code> để áp dụng quay và ghi kết quả.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>handler<span style="color:#f92672">.</span><span style="color:#a6e22e">convert</span><span style="color:#f92672">(</span>inputPath<span style="color:#f92672">,</span> outputPath<span style="color:#f92672">,</span> options<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Image rotated successfully: &#34;</span> <span style="color:#f92672">+</span> outputPath<span style="color:#f92672">);</span>
</span></span></code></pre></div><p>Để biết thêm chi tiết về lớp <code>ConversionHandler</code>, hãy tham khảo <a href="https://reference.conholdate.com/java/com/groupdocs/conversion/ConversionHandler.html">tài liệu API chính thức</a>.</p>
<h2 id="ví-dụ-mã-hoàn-chỉnh-xoay-ảnh-trong-java-bằng-conholdatetotal">Ví dụ mã hoàn chỉnh: Xoay ảnh trong Java bằng Conholdate.Total</h2>
<p>Ví dụ sau đây trình bày quy trình làm việc đầy đủ để xoay một tệp hình ảnh.</p>
<p>Ví dụ này minh họa cách xoay ảnh JPG 90 độ và lưu kết quả.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.conversion.ConversionHandler<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.conversion.options.convert.ImageConvertOptions<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.awt.Color<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">RotateImageExample</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span><span style="color:#f92672">(</span>String<span style="color:#f92672">[]</span> args<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        String inputPath <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;input.jpg&#34;</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        String outputPath <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;output_rotated.jpg&#34;</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">try</span> <span style="color:#f92672">(</span>ConversionHandler handler <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ConversionHandler<span style="color:#f92672">())</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            ImageConvertOptions options <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ImageConvertOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Rotation angle in degrees (positive = clockwise)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>            options<span style="color:#f92672">.</span><span style="color:#a6e22e">setRotateAngle</span><span style="color:#f92672">(</span>90<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Background color for empty areas after rotation
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>            options<span style="color:#f92672">.</span><span style="color:#a6e22e">setBackgroundColor</span><span style="color:#f92672">(</span>Color<span style="color:#f92672">.</span><span style="color:#a6e22e">WHITE</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Preserve original metadata (EXIF, DPI, etc.)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>            options<span style="color:#f92672">.</span><span style="color:#a6e22e">setPreserveMetadata</span><span style="color:#f92672">(</span><span style="color:#66d9ef">true</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Optional: for large images you can limit memory usage
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>            options<span style="color:#f92672">.</span><span style="color:#a6e22e">setQuality</span><span style="color:#f92672">(</span>90<span style="color:#f92672">);</span> <span style="color:#75715e">// JPEG quality (0-100)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span>handler<span style="color:#f92672">.</span><span style="color:#a6e22e">convert</span><span style="color:#f92672">(</span>inputPath<span style="color:#f92672">,</span> outputPath<span style="color:#f92672">,</span> options<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Image rotated successfully: &#34;</span> <span style="color:#f92672">+</span> outputPath<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span> <span style="color:#66d9ef">catch</span> <span style="color:#f92672">(</span>Exception e<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">err</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Error during image rotation:&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            e<span style="color:#f92672">.</span><span style="color:#a6e22e">printStackTrace</span><span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div><blockquote>
<p><strong>Lưu ý:</strong> Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật mọi đường dẫn tệp và giá trị cấu hình để phù hợp với môi trường thực tế, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển của bạn. Nếu gặp bất kỳ vấn đề nào, vui lòng tham khảo <a href="https://docs.conholdate.com/java/">tài liệu chính thức</a> hoặc liên hệ với <a href="https://forum.conholdate.com/c/total/5">đội hỗ trợ</a> để được trợ giúp.</p>
</blockquote>
<h2 id="tham-số-xoay-tùy-chọn-và-cài-đặt">Tham số xoay: Tùy chọn và Cài đặt</h2>
<p>SDK cung cấp một số tùy chọn để tinh chỉnh quá trình quay.</p>
<ul>
<li><strong>Rotate Angle</strong> - Xác định bao nhiêu độ hình ảnh được quay. Giá trị dương quay theo chiều kim đồng hồ.</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setRotateAngle</span><span style="color:#f92672">(</span>90<span style="color:#f92672">);</span>
</span></span></code></pre></div><ul>
<li>
<p><strong>Màu nền</strong> - Đặt màu nền cho các góc trống xuất hiện sau khi xoay. Sử dụng bất kỳ giá trị <code>java.awt.Color</code> nào.</p>
</li>
<li>
<p><strong>Bảo tồn siêu dữ liệu</strong> - Khi được bật, dữ liệu <a href="https://docs.fileformat.com/image/exif/">EXIF</a> , DPI và các siêu dữ liệu khác sẽ được giữ lại trong tệp đầu ra. Xem <a href="https://reference.conholdate.com/java/com/groupdocs/conversion/options/convert/ImageConvertOptions.html">ImageConvertOptions API</a> để biết thêm chi tiết.</p>
</li>
<li>
<p><strong>Chất lượng</strong> - Kiểm soát chất lượng nén JPEG (0‑100). Giá trị cao hơn giữ lại chi tiết nhiều hơn nhưng làm tăng kích thước tệp.</p>
</li>
</ul>
<p>Điều chỉnh các cài đặt này để phù hợp với yêu cầu của ứng dụng của bạn, cho dù bạn cần đầu ra PNG không mất dữ liệu hoặc kết quả JPG chất lượng cao.</p>
<h2 id="kết-luận">Kết luận</h2>
<p>Việc quay ảnh trong Java rất đơn giản khi bạn sử dụng <a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a>. Hướng dẫn này sẽ đưa bạn qua quá trình thiết lập cần thiết, triển khai chi tiết từng bước, và các tùy chọn cấu hình chính cho phép bạn kiểm soát góc quay, nền, bảo tồn siêu dữ liệu và chất lượng đầu ra. Hãy nhớ mua giấy phép phù hợp cho triển khai sản xuất; bạn có thể khám phá các tùy chọn giá tại <a href="https://purchase.conholdate.com/pricing/total/family/">https://purchase.conholdate.com/pricing/total/family/</a> hoặc lấy giấy phép tạm thời để thử nghiệm tại <a href="https://purchase.conholdate.com/temporary-license/">https://purchase.conholdate.com/temporary-license/</a>. Khi SDK đã được tích hợp, bạn có thể thêm chức năng quay ảnh đáng tin cậy vào bất kỳ quy trình làm việc nào dựa trên Java.</p>
<h2 id="câu-hỏi-thường-gặp">Câu hỏi thường gặp</h2>
<ul>
<li>
<p><strong>Làm thế nào để tôi xoay một tệp hình ảnh trong Java bằng Conholdate.Total?</strong><br>
Sử dụng lớp <code>ImageConvertOptions</code> để đặt góc xoay mong muốn và sau đó gọi <code>handler.convert(inputPath, outputPath, options)</code> như đã được trình bày trong các ví dụ ở trên.</p>
</li>
<li>
<p><strong>Có thể xoay cả ảnh PNG và JPG bằng cùng một đoạn mã không?</strong><br>
Có, SDK tự động phát hiện định dạng nguồn. Cung cấp phần mở rộng tệp chính xác trong đường dẫn đầu vào và cùng một đoạn mã sẽ hoạt động cho cả PNG và JPG.</p>
</li>
<li>
<p><strong>Các tùy chọn nào có sẵn để tùy chỉnh quá trình xoay?</strong><br>
Bạn có thể điều chỉnh góc xoay, màu nền, chất lượng đầu ra và chọn có giữ siêu dữ liệu hay không. Tham khảo <a href="https://reference.conholdate.com/java/com/groupdocs/conversion/options/convert/ImageConvertOptions.html">ImageConvertOptions API</a> để biết danh sách đầy đủ.</p>
</li>
<li>
<p><strong>Tôi có cần giấy phép để sử dụng tính năng này trong môi trường sản xuất không?</strong><br>
Cần có giấy phép hợp lệ cho việc sử dụng trong môi trường sản xuất. Nhận giấy phép tạm thời để đánh giá tại <a href="https://purchase.conholdate.com/temporary-license/">https://purchase.conholdate.com/temporary-license/</a> hoặc xem chi tiết giá đầy đủ tại <a href="https://purchase.conholdate.com/pricing/total/family/">https://purchase.conholdate.com/pricing/total/family/</a>.</p>
</li>
</ul>
<h2 id="đọc-thêm">Đọc thêm</h2>
<ul>
<li><a href="https://blog.conholdate.com/vi/total/convert-onenote-to-image-in-java/">Chuyển đổi Onenote sang Hình ảnh trong Java</a></li>
<li><a href="https://blog.conholdate.com/vi/total/convert-excel-to-image-in-java/">Chuyển đổi Excel sang Hình ảnh trong Java</a></li>
<li><a href="https://blog.conholdate.com/vi/total/convert-word-to-image-in-java/">Chuyển đổi Word sang Hình ảnh trong Java</a></li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
